Windows CMD:为文件夹中的所有文件添加后缀

Mas*_*zel 8 windows batch-rename cmd.exe

我有一个包含 120 个.cs文件的文件夹。

我需要做的是在扩展名之前为每个文件名添加“DO”。

这是我想出的:

ren *.cs *. //this removes all file extensions
ren *.* *DO.cs // this should rename all the files and add the suffixes
Run Code Online (Sandbox Code Playgroud)

现在,这主要有效。但不适用于某些文件。

最初,我认为这只是以开头的文件 Do

但是……好吧,结果是这样的:

文件夹视图

(其余不在打印屏幕上的都很好)

现在这不是一个严重的问题;我只是想了解它为什么这样做......

有我的 cmd 输出: 命令输出

通过查看此输出,我认为它可能无法找到文件,因为第二个命令包含. 为重命名;但由于文件夹中的文件在重命名时都没有文件扩展名;这不可能。。

谢谢

Net*_*ion 8

正如其他人所说,它在于ren解释通配符的方式,这就是为什么它*.*在第二个命令中找不到包含点的文件的原因,因为:

  • 您不仅使用第一个命令删除了文件扩展名,还删除了扩展名前的点:

Artikelnummer.cs > Artikelnummer

  • 你的第二个命令正在寻找包含.(没有!)的文件名:

ren *.*

  • 还要考虑ren使用*来引用文件名,因此当您查找*.*(任何名称,任何扩展名)时,您正在使用*同时引用文件名和扩展名,这对ren命令来说很混乱!

所以,结论是,唯一的问题是*.*,将其替换为*

ren *.cs *.DO.cs
ren * *DO.cs
Run Code Online (Sandbox Code Playgroud)

但是,如果您想通过运行一行代码来重命名:

从命令提示符运行:

for /f "tokens=* delims=" %a in ('dir /b "%FilesLocation%"') do if %~xa EQU .cs ren "%a" "%~naDO.cs"
Run Code Online (Sandbox Code Playgroud)

或者保存并运行这个脚本:

@echo off
for /f "tokens=* delims=" %%a in ('dir /b "%FilesLocation%"') do if %%~xa EQU .cs ren "%%a" "%%~naDO.cs"
Run Code Online (Sandbox Code Playgroud)

并且不要忘记改变%FilesLocation%它的真正价值。