2017-03-27 88 views
0

我在我的文件夹中有2个文件。一个是“TEST ONE.txt”,另一个是“LEARN NEW.vcd”。 我需要创建批处理脚本来使用* .vcd重命名* .txt。 因此,批处理脚本应该将“TEST ONE.txt文件”重命名为“LEARN NEW.txt”。基于另一个文件名重命名文件名的shell脚本

我的文件夹C:\ DEV文件夹中只有一个带txt的文件和一个带有vcd扩展名的文件。

我试着用下面的脚本,但它不拿起VCD延伸的全名和空格之后下降了一切 - 所以我只是得到Learn.txt,以:(

@echo ON 
CD "C:\DEV folder" 
setlocal enabledelayedexpansion 
for /F %%A in ('dir /b *.vcd') do ( 
    set xname= %%~nA 
    ren *.txt !xname!.txt 
) 

谢谢 - DB

回答

0

看来,FOR /F默认的可能是只需要一(1)令牌,你可以强制它全部采用tokens=*服用。引用是很重要的。

@echo ON 
CD "sub" 
setlocal enabledelayedexpansion 
for /F "usebackq tokens=*" %%A in (`dir /b *.vcd`) do (
    set xname=%%~nA 
    ren "*.txt" "!xname!.txt" 
) 
+0

你甚至不需要延迟扩展和变量:'ren“* .txt”“%%〜nA.txt”' – Stephan