फ़ाइल नामों से विशेष वर्णों को हटाने के लिए बैच फ़ाइल स्क्रिप्ट (विंडोज़)

मेरे पास फाइलों का एक बड़ा सेट है, जिनमें से कुछ फ़ाइल नाम में विशेष वर्ण हैं (उदा। Ä, ö,%, और अन्य)। मुझे इन फ़ाइलों पर पुनरावृत्ति करने के लिए एक स्क्रिप्ट फ़ाइल चाहिए और उन्हें विशेष वर्णों को हटाने का नाम बदलें। मुझे वास्तव में यह नहीं लगता कि यह क्या करता है, लेकिन यह उन्हें अंडरस्कोर के साथ प्रतिस्थापित कर सकता है उदाहरण के लिए उदा।

Störung% 20.doc का नाम बदलकर St_rung_20.doc कर दिया जाएगा

वरीयता के क्रम में:

  1. एक विंडिव्स बैच फ़ाइल
  2. सीएसक्रिप्ट (vbs)
  3. के साथ चलाने के लिए एक विंडोज स्क्रिप्ट फ़ाइल
  4. सॉफ़्टवेयर का एक तृतीय पक्ष टुकड़ा जिसे कमांड लाइन से चलाया जा सकता है (यानी कोई उपयोगकर्ता इंटरैक्शन आवश्यक नहीं है)
  5. एक और भाषा स्क्रिप्ट फ़ाइल, जिसके लिए मुझे एक अतिरिक्त स्क्रिप्ट इंजन स्थापित करना होगा

पृष्ठभूमि: मैं इन फ़ाइलों को विंडोज़ पर जीएनयूपीजी के साथ एन्क्रिप्ट करने की कोशिश कर रहा हूं लेकिन यह --encrypt-files विकल्प के साथ फ़ाइल नामों में विशेष वर्णों को संभालने की प्रतीत नहीं होता है।

0

5 उत्तर

टॉमलाक के लिए धन्यवाद जिन्होंने वास्तव में मुझे सही दिशा में इंगित किया। सोचा कि मैं यहां पूर्णता के लिए पोस्ट करूंगा।

समस्या यह प्रतीत होती है कि जीपीजी द्वारा उपयोग किया गया कोडपेज कंसोल में कॉन्फ़िगर किए गए कोड पेज से स्वतंत्र (लैटिन I) तय किया गया है। लेकिन एक बार जब उसने यह इंगित किया, तो मैंने यह पता लगाया कि यह कैसे कामयाब है।

यह फ़ाइल फ़ाइल सूची उत्पन्न करने से पहले कोडपेज को बदलना है। कंसोल में देखे जाने पर यह वास्तव में फ़ाइललिस्ट गलत दिखाई देगा। हालांकि, जब जीपीजी पास किया गया, तो यह ठीक काम करता है। जीपीजी फाइलों को स्वीकार करता है और एन्क्रिप्टेड फाइलों को सही फाइलनामों से बाहर निकाल देता है।

बैच फ़ाइल इस तरह कुछ दिखती है:

chcp 1252
dir /b /s /a-d MyFolder >filelist.txt
gpg -r [email protected] --encrypt-files 
0
जोड़ा
यह सवाल का जवाब नहीं देता है। सवाल ने बैच फ़ाइल से पूछा, यह questiomn obvioly पूछताछ करने वालों को हल करता है, (जैसा कि आप पूछने वाले हैं) लेकिन आपको इसे सही उत्तर के रूप में नहीं चुना जाना चाहिए था।
जोड़ा लेखक Lyndon White, स्रोत

क्या आपने फ़ाइल नाम को gnupg में फ़ीड करने से पहले cmd.exe को किसी अन्य कोडपेज में सेट करने का प्रयास किया है? समस्या chcp 65001 cmd.exe को पहले से यूनिकोड पर सेट करने के लिए सेट करें और पुनः प्रयास करें।

यदि यह विफल रहता है, तो निम्न VBScript ऐसा करेगा:

Option Explicit

Dim fso: Set fso = CreateObject("Scripting.FileSystemObject")
Dim invalidChars: Set invalidChars = New RegExp

' put all characters that you want to strip inside the brackets
invalidChars.Pattern =  "[äöüß&%]"
invalidChars.IgnoreCase = True
invalidChars.Global = True

If WScript.Arguments.Unnamed.Count = 0 Then
  WScript.Echo "Please give folder name as argument 1."
  WScript.Quit 1
End If

Recurse fso.GetFolder(WScript.Arguments.Unnamed(0))

Sub Recurse(f)
  Dim item

  For Each item In f.SubFolders
    Recurse item
    Sanitize item
  Next
  For Each item In f.Files
    Sanitize item
  Next
End Sub

Sub Sanitize(folderOrFile)
  Dim newName: newName = invalidChars.Replace(folderOrFile.Name, "_")
  If folderOrFile.Name = newName Then Exit Sub
  WScript.Echo folderOrFile.Name, " -> ", newName
  folderOrFile.Name = newName 
End Sub

इसे इस तरह कहते हैं:

cscript replace.vbs "c:\path\to\my\files"

You can also drag&drop a folder onto it in Windows Explorer.

0
जोड़ा

http://www.robvanderwoude.com/bht.html से:

एक स्ट्रिंग में कहीं भी अक्षरों को बदलने या हटाने के लिए एनटी के एसईटी के स्ट्रिंग प्रतिस्थापन का उपयोग करें:

SET STRING=[ABCDEFG]
SET STRING=%sTRING:[=%
SET STRING=%sTRING:]=%
ECHO String: %sTRING%

will display 
String: ABCDEFG

SET STRING=[ABCDEFG]
SET STRING=%sTRING:[=(%
SET STRING=%sTRING:]=)%
ECHO String: %sTRING%

will display 
String: (ABCDEFG)

SET STRING=[ABCDEFG]
SET STRING=%sTRING:~1,7%
ECHO String: %sTRING%

will display 
String: ABCDEFG

यदि आप इस प्रयास का उपयोग करते हैं, तो आपको प्रत्येक चरित्र को प्रतिस्थापित करना होगा (उदा। Ä, Ö, Ü, ä, ö, ü, ß, लेकिन यह भी, ए, ए, è, è ...) अलग से।

0
जोड़ा

'RenameFilesWithAccentedAndDiacriticalLatinChars.pl' के बाद, PERL स्क्रिप्ट उच्चारण और लैंगिक लैटिन वर्णों वाली फ़ाइलों का नाम बदलती है:

  • This PERL script starts from the folder given in parameter, or else from the current folder.
  • It recursively searches for files with characters belonging to 80 - FF of CP 1250, CP 1252, CP 1254 and CP 1257 (mostly accented Latin characters) or Latin characters having diacritical marks.
  • It calculates new file names by removing the accents and diacritical marks only from Latin characters (For example, Été --> Ete).
  • It displays all proposed renaming and perhaps conflicts, and asks the user for global approval.
  • If the user has approved, it renames all files having no conflict.

विकल्प '- बैच' इंटरैक्टिव प्रश्नों से बचाता है। देखभाल के साथ प्रयोग करें।

विकल्प '-' विकल्प के रूप में व्याख्या करने के लिए अगले पैरामीटर से बचाता है।

Special Warning :

  • यह स्क्रिप्ट मूल रूप से यूटीएफ -8 में एन्कोड किया गया था, और ऐसा ही रहना चाहिए।
  • यह स्क्रिप्ट कई फाइलों का नाम बदल सकती है।
  • फाइल नाम सैद्धांतिक रूप से केवल यूटीएफ -8 के साथ एन्कोड किए गए हैं। लेकिन कुछ फाइलें नामों में विरासत एन्कोडिंग वाले कुछ वर्ण भी शामिल हो सकते हैं।
  • लेखक ने स्थिरता जांच, मजबूती, संघर्ष के लिए प्रयासों को लागू किया है उचित एन्कोडिंग का पता लगाने और उपयोग। इसलिए इस स्क्रिप्ट को केवल उच्चारण और विशिष्टता को हटाकर फ़ाइलों का नाम बदलना चाहिए लैटिन वर्णों से अंक।
  • लेकिन इस स्क्रिप्ट का परीक्षण केवल सीमित संख्या में ओएस के तहत किया गया है (विंडोज़, मैक ओएस एक्स, लिनक्स) और सीमित संख्या में टर्मिनल एन्कोडिंग (सीपी 850, आईएसओ -885 9 -1, यूटीएफ -8)।
  • तो, अजीब परिस्थितियों में, यह स्क्रिप्ट कई फाइलों का नाम बदल सकती है यादृच्छिक नाम।
  • इसलिए, इस स्क्रिप्ट का उपयोग देखभाल के साथ किया जाना चाहिए, और चरम के साथ संशोधित किया जाना चाहिए देखभाल (आंतरिक तारों, इनपुट, आउटपुट और कमांड के एन्कोडिंग से सावधान रहें)
#!/usr/bin/perl -w
#=============================================================================
#
#  Copyright 2010  Etienne URBAH
#
#  This program is free software; you can redistribute it and/or modify
#  it under the terms of the GNU General Public License as published by
#  the Free Software Foundation; either version 2 of the License, or
#  (at your option) any later version.
#
#  This program is distributed in the hope that it will be useful,
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#  GNU General Public License for more details at
#  http://www.gnu.org/licenses/gpl.html
#
#  For usage and SPECIAL WARNING, see the 'Help' section below.
#
#=============================================================================
use 5.008_000;    #  For correct Unicode support
use warnings;
use strict;
use Encode;

$| = 1;           #  Autoflush STDOUT

#-----------------------------------------------------------------------------
#  Function ucRemoveEolUnderscoreDash :
#  Set Uppercase, remove End of line, Underscores and Dashes
#-----------------------------------------------------------------------------
sub ucRemoveEolUnderscoreDash
{
  local $_ = uc($_[0]);
  chomp;
  tr/_\-//d;
  $_;
}

#-----------------------------------------------------------------------------
#  Constants
#-----------------------------------------------------------------------------
my $Encoding_Western  = 'ISO-8859-1';
my $Encoding_Central  = 'ISO-8859-2';
my $Encoding_Baltic   = 'ISO-8859-4';
my $Encoding_Turkish  = 'ISO-8859-9';
my $Encoding_W_Euro   = 'ISO-8859-15';
my $Code_Page_OldWest =   850;
my $Code_Page_Central =  1250;
my $Code_Page_Western =  1252;
my $Code_Page_Turkish =  1254;
my $Code_Page_Baltic  =  1257;
my $Code_Page_UTF8    = 65001;

my $HighBitSetChars   = pack('C*', 0x80..0xFF);

my %superEncodings    =
  ( &ucRemoveEolUnderscoreDash($Encoding_Western), 'cp'.$Code_Page_Western,
    &ucRemoveEolUnderscoreDash($Encoding_Central), 'cp'.$Code_Page_Central,
    &ucRemoveEolUnderscoreDash($Encoding_Baltic),  'cp'.$Code_Page_Baltic,
    &ucRemoveEolUnderscoreDash($Encoding_Turkish), 'cp'.$Code_Page_Turkish,
    &ucRemoveEolUnderscoreDash($Encoding_W_Euro),  'cp'.$Code_Page_Western,
    &ucRemoveEolUnderscoreDash('cp'.$Code_Page_OldWest),
                                                   'cp'.$Code_Page_Western );

my %EncodingNames     = ( 'cp'.$Code_Page_Central, 'Central European',
                          'cp'.$Code_Page_Western, 'Western European',
                          'cp'.$Code_Page_Turkish, '    Turkish     ',
                          'cp'.$Code_Page_Baltic,  '     Baltic     ' );

my %NonAccenChars     = ( 
                          #--------------------------------#
'cp'.$Code_Page_Central,  #   Central European (cp1250)    #
                          #--------------------------------#
                          #€_‚_„…†‡_‰Š‹ŚŤŽŹ_‘’“”•–—_™š›śťžź#
                          'E_,_,.++_%s_STZZ_````.--_Ts_stzz'.

                          # ˇ˘Ł¤Ą¦§¨©Ş«¬­®Ż°±˛ł´µ¶·¸ąş»Ľ˝ľż#
                          '_``LoAlS`CS_--RZ`+,l`uP.,as_L~lz'.

                          #ŔÁÂĂÄĹĆÇČÉĘËĚÍÎĎĐŃŇÓÔŐÖ×ŘŮÚŰÜÝŢß#
                          'RAAAALCCCEEEEIIDDNNOOOOxRUUUUYTS'.

                          #ŕáâăäĺćçčéęëěíîďđńňóôőö÷řůúűüýţ˙#
                          'raaaalccceeeeiiddnnoooo%ruuuuyt`',

                          #--------------------------------#
'cp'.$Code_Page_Western,  #   Western European  (cp1252)   #
                          #--------------------------------#
                          #€_‚ƒ„…†‡ˆ‰Š‹Œ_Ž__‘’“”•–—˜™š›œ_žŸ#
                          'E_,f,.++^%s_O_Z__````.--~Ts_o_zY'.

                          # ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿#
                          '_!cLoYlS`Ca_--R-`+23`uP.,10_qh3_'.

                          #ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞß#
                          'AAAAAAACEEEEIIIIDNOOOOOxOUUUUYTS'.

                          #àáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ#
                          'aaaaaaaceeeeiiiidnooooo%ouuuuyty',

                          #--------------------------------#
'cp'.$Code_Page_Turkish,  #       Turkish  (cp1254)        #
                          #--------------------------------#
                          #€_‚ƒ„…†‡ˆ‰Š‹Œ____‘’“”•–—˜™š›œ__Ÿ#
                          'E_,f,.++^%s_O____````.--~Ts_o__Y'.

                          # ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿#
                          '_!cLoYlS`Ca_--R-`+23`uP.,10_qh3_'.

                          #ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏĞÑÒÓÔÕÖ×ØÙÚÛÜİŞß#
                          'AAAAAAACEEEEIIIIGNOOOOOxOUUUUISS'.

                          #àáâãäåæçèéêëìíîïğñòóôõö÷øùúûüışÿ#
                          'aaaaaaaceeeeiiiignooooo%ouuuuisy',

                          #--------------------------------#
'cp'.$Code_Page_Baltic,   #       Baltic   (cp1257)        #
                          #--------------------------------#
                          #€_‚_„…†‡_‰_‹_¨ˇ¸_‘’“”•–—_™_›_¯˛_#
                          'E_,_,.++_%___``,_````.--_T___-,_'.

                          # �¢£¤�¦§Ø©Ŗ«¬­®Æ°±²³´µ¶·ø¹ŗ»¼½¾æ#
                          '__cLo_lSOCR_--RA`+23`uP.o1r_qh3a'.

                          #ĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ×ŲŁŚŪÜŻŽß#
                          'AIACAAEECEZEGKILSNNOOOOxULSUUZZS'.

                          #ąįāćäåęēčéźėģķīļšńņóōõö÷ųłśūüżž˙#
                          'aiacaaeecezegkilsnnoooo%ulsuuzz`' );

my %AccentedChars;
my $AccentedChars     = '';
my $NonAccenChars     = '';
for ( $Code_Page_Central, $Code_Page_Western,
      $Code_Page_Turkish, $Code_Page_Baltic )
    {
      $AccentedChars{'cp'.$_}  = decode('cp'.$_, $HighBitSetChars);
      $AccentedChars          .= $AccentedChars{'cp'.$_};
      $NonAccenChars          .= $NonAccenChars{'cp'.$_};
    }
#print "\n", length($NonAccenChars), '  ', $NonAccenChars,"\n";
#print "\n", length($AccentedChars), '  ', $AccentedChars,"\n";

my $QuotedMetaNonAccenChars = quotemeta($NonAccenChars);

my $DiacriticalChars  = '';
for  ( 0x0300..0x036F, 0x1DC0..0x1DFF )
     { $DiacriticalChars .= chr($_) }

#-----------------------------------------------------------------------------
#  Parse options and parameters
#-----------------------------------------------------------------------------
my $b_Help        = 0;
my $b_Interactive = 1;
my $b_UTF8        = 0;
my $b_Parameter   = 0;
my $Folder;

for  ( @ARGV )
{
  if    ( lc($_) eq '--' )
        { $b_Parameter = 1 }
  elsif ( (not $b_Parameter) and (lc($_) eq '--batch') )
        { $b_Interactive = 0 }
  elsif ( (not $b_Parameter) and (lc($_) eq '--utf8') )
        { $b_UTF8 = 1 }
  elsif ( $b_Parameter or (substr($_, 0, 1) ne '-') )
        {
          if  ( defined($Folder) )
              { die "$0 accepts only 1 parameter\n" }
          else
              { $Folder = $_ }
        }
  else
        { $b_Help = 1 }
}

#-----------------------------------------------------------------------------
#  Help
#-----------------------------------------------------------------------------
if  ( $b_Help )
    {
      die << "END_OF_HELP"

$0  [--help]  [--batch]  [--]  [folder]

This script renames files with accented and diacritical Latin characters :

-  This PERL script starts from the folder given in parameter, or else from
   the current folder.
-  It recursively searches for files with characters belonging to 80 - FF of
   CP 1250, CP 1252, CP 1254 and CP 1257 (mostly accented Latin characters)
   or Latin characters having diacritical marks.
-  It calculates new file names by removing the accents and diacritical marks
   only from Latin characters  (For example,  Été --> Ete).
-  It displays all proposed renaming and perhaps conflicts, and asks the user
   for global approval.
-  If the user has approved, it renames all files having no conflict.

विकल्प '- बैच' इंटरैक्टिव प्रश्नों से बचाता है। देखभाल के साथ प्रयोग करें।

विकल्प '-' विकल्प के रूप में व्याख्या करने के लिए अगले पैरामीटर से बचाता है।

SPECIAL WARNING :
-  This script was originally encoded in UTF-8, and should stay so.
-  This script may rename a lot of files.
-  Files names are theoretically all encoded only with UTF-8.  But some file
   names may be found to contain also some characters having legacy encoding.
-  The author has applied efforts for consistency checks, robustness, conflict
   detection and use of appropriate encoding.
   So this script should only rename files by removing accents and diacritical
   marks from Latin characters.
-  But this script has been tested only under a limited number of OS
   (Windows, Mac OS X, Linux) and a limited number of terminal encodings
   (CP 850, ISO-8859-1, UTF-8).
-  So, under weird circumstances, this script could rename many files with
   random names.
-  Therefore, this script should be used with care, and modified with extreme
   care (beware encoding of internal strings, inputs, outputs and commands)
END_OF_HELP
    }

#-----------------------------------------------------------------------------
#  If requested, change current folder
#-----------------------------------------------------------------------------
if  ( defined($Folder) )
    { chdir($Folder)  or  die  "Can NOT set '$Folder' as current folder\n" }

#-----------------------------------------------------------------------------
#  Following instruction is MANDATORY.
#  The return value should be non-zero, but on some systems it is zero.
#-----------------------------------------------------------------------------
utf8::decode($AccentedChars);
#  or  die "$0: '\$AccentedChars' should be UTF-8 but is NOT.\n";

#-----------------------------------------------------------------------------
#  Check consistency on 'tr'
#-----------------------------------------------------------------------------
$_ = $AccentedChars;
eval "tr/$AccentedChars/$QuotedMetaNonAccenChars/";
if  ( [email protected] )  { warn [email protected] }
if  ( [email protected] or ($_ ne $NonAccenChars) )
    { die "$0: Consistency check on 't
0
जोड़ा
उपयोगकर्ता 'नोवी' सही था: अभी भी मेरे $ AccentedChars स्ट्रिंग के साथ समस्याएं थीं। मुझे बहुत खुशी है कि 'tr' पर मेरी स्थिरता जांच ने मेरी स्क्रिप्ट को भयानक नामांकन करने से पहले रोकने की अनुमति दी। मेरे पास मेरी मूल PERL स्क्रिप्ट को सुरक्षित रूप से अपलोड करने के लिए कोई स्थान नहीं है, इसलिए मैंने उपरोक्त संस्करण को ठीक किया है, और मैंने इसे सफलतापूर्वक परीक्षण किया है। इसलिए, मुझे आशा है कि उपरोक्त संस्करण अब अच्छा है। कृपया इसका परीक्षण करें।
जोड़ा लेखक Etienne URBAH, स्रोत
हाय 'मेडियन-ऑडिटिव'। मेरी स्क्रिप्ट आपके 'LANG' पर्यावरण चर के मान पर भरोसा करती है। आपका त्रुटि संदेश अजीब लग रहा है, क्योंकि मेरी स्क्रिप्ट की लाइन 3 9 0 पूरी तरह से यूटीएफ 8 के रूप में प्रिंट करती है, और 'öäß-testfolder' का 'ö' सही ढंग से यूटीएफ -8 का उपयोग करके प्रदर्शित होता है, लेकिन 'möglich' का 'ö' प्रदर्शित होता है आईएसओ -885 9 -1: *** एलएस: ज़ुग्रिफ औफ öäß-testfolder nicht mÃglglich: ऐसी कोई फ़ाइल या निर्देशिका नहीं है क्या आप सत्यापित कर सकते हैं कि 'लोकेल' कमांड का आउटपुट सुसंगत है? इसके अलावा, मेरा मेल प्रदाता free.fr है, मेरा खाता eurbah है, और यह भी है। MFG।
जोड़ा लेखक Etienne URBAH, स्रोत
मेरी पीआरएल लिपि के आज के संस्करण ने मजबूती में काफी सुधार किया है, और अब सही ढंग से होना चाहिए: - विरासत और यूटीएफ -8 अक्षरों के साथ फ़ाइल नामों को ध्यान में रखें, फ़ाइल नाम जिनमें उद्धरण और फ़ाइल नाम डैश से शुरू होते हैं। - पर्याप्त एन्कोडिंग के साथ प्रिंट त्रुटि संदेश। इसके अलावा, अब यह सीपी 1250 (सेंट्रल यूरोपीय), सीपी 1252 (पश्चिमी यूरोपीय), सीपी 1254 (तुर्की) और सीपी 1257 (बाल्टिक) के सभी उच्चारण वर्णों को परिवर्तित करता है। कृपया इसका परीक्षण करें।
जोड़ा लेखक Etienne URBAH, स्रोत
मैं "फाइल नहीं ढूंढ सकता" त्रुटि प्राप्त कर रहा हूं: pastebin.com/sTQ1tPc1 (पर्यावरण: सक्रिय 7 के साथ विंडोज 7 x64 x64 5.18.1.1800)
जोड़ा लेखक Micha? Sacharewicz, स्रोत

मैं फ़ोल्डरों का नाम बदलने के लिए इस बैच का उपयोग कर रहा हूं और अब तक ठीक काम करता प्रतीत होता है ... मेरे मामले में कोडपेज 1252 है, आपका अलग हो सकता है।

mode con codepage select=1252
@echo off
Setlocal enabledelayedexpansion
::folder only (/D option)
for /R /D %%d in (*) do (

set an=%%~nd
set bn=!an:.=_!
set cn=!bn:-=_!
set dn=!cn: =_!
set en=!dn:Á=A!
set fn=!en:É=E!
set gn=!fn:Í=I!
set hn=!gn:Ó=O!
set in=!hn:Ú=U!
set jn=!in:Ü=U!
set kn=!jn:á=a!
set ln=!kn:é=e!
set mn=!ln:í=i!
set nn=!mn:ó=o!
set on=!nn:ú=u!
set pn=!on:ü=u!
set qn=!pn:Ñ=N!
set zn=!on:ñ=n!

set ax=%%~xd
set bx=!ax:.=_!
set cx=!bx:-=_!
set dx=!cx: =_!
set bx=!ax:.=_!
set cx=!bx:-=_!
set dx=!cx: =_!
set ex=!dx:Á=A!
set fx=!ex:É=E!
set gx=!fx:Í=I!
set hx=!gx:Ó=O!
set ix=!hx:Ú=U!
set jx=!ix:Ü=U!
set kx=!jx:á=a!
set lx=!kx:é=e!
set mx=!lx:í=i!
set nx=!mx:ó=o!
set ox=!nx:ú=u!
set px=!ox:ü=u!
set qx=!px:Ñ=N!
set zx=!ox:ñ=n!


if [!an!]==[] (set zn=)
if [!ax!]==[] (set zx=)

set newname=!zn!!zx!

if /i not [%%~nd%%~xd]==[!newname!] rename "%%d" !newname!

)

endlocal

pause
0
जोड़ा