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
但是……好吧,结果是这样的:
(其余不在打印屏幕上的都很好)
现在这不是一个严重的问题;我只是想了解它为什么这样做......
通过查看此输出,我认为它可能无法找到文件,因为第二个命令包含. 为重命名;但由于文件夹中的文件在重命名时都没有文件扩展名;这不可能。。
谢谢
正如其他人所说,它在于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%
它的真正价值。