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

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

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

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

以下是我想到的内容:

ren *.cs *. //this removes all file extensions
ren *.* *DO.cs // this should rename all the files and add the suffixes

现在,这种方法基本可行。但对某些文件则不然。

最初,我以为只是以Do

但...嗯,结果如下:

文件夹视图

(其余未在屏幕上显示的内容均可)

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

这是我的 cmd 输出: cmd 输出

通过查看此输出,我认为也许它找不到文件,因为第二个命令包含进行重命名;但由于重命名时文件夹中的任何文件都没有文件扩展名;所以不可能是这样..

谢谢

答案1

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

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

Artikelnummer.cs > Artikelnummer

  • 您的第二条命令是查找包含以下内容的文件名.(但没有!):

ren *.*

  • 还考虑ren使用*来引用文件名,因此当您查找*.*(任何名称,任何扩展名)时,您会*同时使用来引用文件名和扩展名,这会给ren命令带来混淆!

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

ren *.cs *.DO.cs
ren * *DO.cs

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

从命令提示符运行:

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

或者保存并运行此脚本:

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

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

答案2

我正在寻找一种方法来添加后缀“_t”到我的图像。

只需一个简单的PowerShell 命令做到了 !

CD "target folder path here"
Dir | Rename-Item -NewName { $_.basename + "_Suffix” + $_.extension}

在此处输入图片描述

答案3

你需要的是 for 命令。我脑海中浮现的命令是这样的:

for /f "tokens=1,2* delims=." %a in ('dir *.cs /b') do (ren %a.%b %aDO.%b)

但是,这对于包含多个点的文件名不起作用。

答案4

FOR有一种模式可以循环遍历文件(也可以递归),不需要dir /bhttps://ss64.com/nt/for2.html)。您需要传递一个文件 glob 或一个列表(*.cs, \path\*.txt,...)

命令行

FOR %_ IN (*.cs) DO @REN "%_" "%~n_DO.*"

在批处理文件中(使用%%

FOR %%_ IN (*.cs) DO @REN "%%_" "%%~n_DO.*"

笔记:

  • %_是有效变量

  • @不转储每个文件名的重命名命令

  • %~n_仅返回名称部分%_(删除最后一个扩展名)

  • 添加/R "c:\directory"以递归解析目录(https://ss64.com/nt/for_r.html)请谨慎使用 - 无法撤消

  • 双引号"很重要,因为路径和文件名可能包含空格

  • 无法按预期与多个扩展配合使用,因为在 Windows 中只有最后一个标记才被视为扩展。即测试版会变成测试版

我建议你先尝试FOR %_ IN (*.cs) DO echo REN "%_" "%~n_DO.*"一下

相关内容