2011-06-15 21 views
6

में एकाधिक फ़ाइलों का नाम बदलें मैं फ़ोल्डर * .txt, के अंदर सभी फ़ाइलों का नाम बदलना चाहता हूं, इसलिए परिणाम "1.txt", "2.txt" और "3.txt" होगा। ...डॉस बैच फ़ाइल

मैं ऐसा कैसे कर सकता हूं?

+0

क्या इससे कोई फर्क पड़ता है कि नया नाम पुराना नाम से कोई संबंध है? जैसे AAA.txt -> 1.txt, BBB.txt -> 2.txt – Kev

+0

नहीं, मैं इसे धारावाहिक के साथ नाम बदलना चाहता हूं उदा। cat.txt, dog.txt, rat.txt -> 1.txt, 2.txt, 3.txt और – JustMe

उत्तर

11

निम्नलिखित को पूरा कर सकते हैं कि आप क्या देख रहे हैं। यह पाठ फ़ाइलों के माध्यम से पुनरावृत्त करने के लिए for लूप का उपयोग करता है और एक चर के नाम बदलने और वृद्धि करने के लिए बैच फ़ाइल के किसी अन्य बिट को "कॉल" बनाता है।

संपादित करें एंड्री द्वारा सुझाए गए क्लीनर समाधान में गणित ऑपरेशन बदलें।

@echo off 
set i=1 
for %%f in (*.txt) do call :renameit "%%f" 
goto done 

:renameit 
ren %1 %i%.txt 
set /A i+=1 

:done 
+0

में इसे करना चाहता हूं दो समस्याएं हैं, केवल एक फ़ाइल का नाम बदल दिया गया है, और यदि फ़ाइल नामों में रिक्त स्थान हैं, तो बैच किसी भी फ़ाइल का नाम नहीं बदल सकता – JustMe

+0

@ जस्टमे: मैंने प्रतिक्रिया संपादित की और रिक्त स्थान के साथ फ़ाइल नामों को संभालने के लिए '%% f' के आस-पास उद्धरण डाला। यह स्पष्ट नहीं है, हालांकि, केवल एक फ़ाइल संसाधित क्यों की जाएगी। यह एक अलग डॉस संस्करण के कारण हो सकता है। –

+0

+1। वैसे, 'एसईटी/ए i = i + 1' या यहां तक ​​कि' एसईटी/ए i = = 1' भी वही करेगा। –

1

पहले निर्देशिका प्रविष्टि बनाने:

dir /b *.txt > myfile.cmd 

फिर UltraEdit (http://www.ultraedit.com/) शुरू करने और फ़ाइल खोलें।

तब स्तंभ मोड में जाने, सभी लाइनों का चयन, और: हर पंक्ति के अंत में हर पंक्ति

  • डालने ".txt" की शुरुआत में

    • डालने "नाम बदलें" (के लिए सुनिश्चित हो यह मामले में काफी दूर तक सही तुम बहुत लंबी लाइनों है)
    • एक नंबर डालने (देखें डाल कॉलम/सम्मिलित करें मेनू में संख्या) सही .TXT
    • से पहले
  • +1

    ठीक है, लेकिन मैं बैच फ़ाइल (डॉस कमांड) – JustMe

    1

    मैं फ़ोल्डर * .txt के अंदर सभी फ़ाइलों का नाम बदलना चाहते हैं, तो परिणाम "1.txt", "2.txt" और "3.txt" हो जाएगा, ....

    मैं ऐसा कैसे कर सकता हूं?

    ::Setup the stage... 
    SETLOCAL ENABLEDELAYEDEXPANSION 
    SET folder=C:\This\Is\The\Folder 
    SET count=1 
    
    ::Action 
    CD "%folder%" 
    FOR %%F IN ("*.txt") DO (
    MOVE "%%F" "!count!.txt" 
    SET /a count=!count!+1 
    ) 
    ENDLOCAL 
    

    आशुलिपि

    SETLOCAL ENABLEDELAYEDEXPANSION 
    SET count=1 
    FOR %%F IN (C:\Path\To\File\*.txt) DO MOVE "%%~fF" "%%~dpF!count!.txt" & SET /a count=!count!+1 
    ENDLOCAL 
    

    तो अपने फ़ोल्डर cat.txt, dog.txt, bird.txt, निहित अगर ninjaturtle.txt, यह उत्पादन 1.txt, 2.txt, 3.txt , 4.txt।