shell脚本,根据其他文件名重命名文件名

时间:2017-03-27 20:02:49

标签: cmd rename

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

我的文件夹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

2 个答案:

答案 0 :(得分: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"
)

答案 1 :(得分:0)

以防万一有人迷路了,我不得不设计一种更优雅的解决方案,因为我希望它可以通过多个子目录,而不是一次运行一个目录。它是: forfiles /S /M *.vcd /C "cmd /c rename *.txt @fname.txt"

使用您选择的文件扩展名。

相关问题