एक बैच के साथ फ़ाइलों का नाम बदलें, लेकिन केवल "* D.txt" पर समाप्त होने वाले


2

मैं सभी फ़ाइलों को एक ही निर्देशिका में नाम बदलना चाहता हूं, लेकिन केवल txt-files जो एक के साथ समाप्त होती हैं D

यहाँ मैं एक बैच में कोशिश की है ... लेकिन दोनों काम नहीं किया।

----- try1 -----

@echo off
 set Quelle="C:\temp\TEST\IN\"
 Set DateiFilter="*D.txt"
 for /r %Quelle% %%i in (%DateiFilter%) do rename %%i %%~niI.txt
 end

----- try2 -----

@echo on
setlocal enableDelayedExpansion
set Quelle="C:\temp\TEST\IN\"
Set DateiFilter="*.txt"
set y="D"
set z="I"
for /r %Quelle% %%i in (%DateiFilter%) do (set x=%%i rename "%%i" "!x:D.txt=I.txt!")
pause
end

धन्यवाद! :-) मैंने इसे प्रारूपित किया था लेकिन इसने मेरी गाड़ी के रिटर्न को नहीं पहचाना। क्षमा करें;)
जेनिफर

+1 महान पहला प्रश्न। क्या आप इस बात की पुष्टि कर सकते हैं कि "काम नहीं किया" से आपका क्या मतलब है। क्या उन्होंने बिल्कुल नकल की, कुछ भी कॉपी नहीं किया, क्या सभी फाइलें कॉपी की गईं?
डेव

आप %% f में (* D.txt) का नाम बदलकर "%% f" "%% ~ newName.txt" करना चाहते हैं
डेव

शुक्रिया @DaveRook! यह अंत में एक डी के साथ फाइलों में "I" को सही ढंग से जोड़ने के साथ इसका नाम बदल देता है। लेकिन मैं डी को कैसे रिप्लाई कर सकता हूं? 1234D.txt -> 1234I.txt (D का स्थान I मिलता है) 1234X.txt -> 1234X.txt (वही रहता है) आप धन्यवाद :)
jennifer

किया गया ... यह कार्य करता है: @echo off pushd "C: \ temp \ TEST \ IN \" setlocal enableelayedexpansion के लिए / f "delims =" %% a ('dir "* D.txt / b / ad ') do (सेट "नाम = %% ~ ना" सेट "नाम =! नाम: ~ 0, -1! मैं" %% "a"! नाम! %% ~ xa ") popd ठहराव
jennifer

जवाबों:


0

ओपी की टिप्पणियों में जवाब दिया

@echo off 
pushd "C:\temp\TEST\IN\" 
setlocal enabledelayedexpansion 
for /f "delims=" %%a in ('dir "*D.txt" /b /a-d ') do (
   set "name=%%~na" 
   set "name=!name:~0,-1!I" 
   ren "%%a" "!name!%%~xa"
)
popd 
pause 
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.