在批处理脚本中重命名文件

在批处理脚本中重命名文件

我试图通过批处理脚本重命名文件夹中的所有文件,但出现了一个我似乎无法识别的语法错误:

for %%f in (%Source%\*DebugLog.Config) do %%f ren %%f "%Source%\%ProjectName%.*DebugLog.Config"

我的想法是,在任何以 DebugLog.Config 结尾的文件前加上前缀,这样它就变成了“projectName.DebugLog.Config”

哪里出了问题?

答案1

我遇到了一个似乎无法识别的语法错误

for %%f in (%Source%\*DebugLog.Config) do %%f ren %%f "%Source%\%ProjectName%.*DebugLog.Config".

您的批处理文件中有几个错误(其中 2 个是我自己犯的)。

正如我指出的那样评论 别处经过德本汉姆

REN 目标不能包含驱动器或路径。它只能是名称和扩展名

使用简单的 FOR 可能会带来多次重命名文件的风险 - 不太好 :-( 最好将 FOR /F 与 DIR /B 一起使用

看看他的回答在多个文件名末尾添加“text”有关上述内容的更多解释。

除了do %%f毫无意义之外,应该只是do

这是一个有效的批处理文件:

@echo off
pushd %source%
for /f "delims= eol=:" %%f in ('dir /b /a-d *DebugLog.Config') do ren "%%f" "%ProjectName%.%%f"
popd

进一步阅读

  • Windows CMD 命令行的 AZ 索引- 与 Windows cmd 行相关的所有事物的绝佳参考。
  • 目录- 显示文件和子文件夹的列表。
  • 对于/f- 循环命令以执行另一个命令的结果。
  • 弹出- 将目录更改回 PUSHD 命令最近存储的路径/文件夹。
  • - 更改当前目录/文件夹并存储前一个文件夹/路径以供 POPD 命令使用。
  • - 重命名一个或多个文件。

答案2

这在多个地方都出错了。假设%Source%以反斜杠结尾(编辑:似乎不是,所以添加反斜杠:)

for %%f in (%Source%\*DebugLog.Config) do ren "%%f" "%ProjectName%.%%~nxf"

ren 目标不能包含路径,因此%%~nxf提取的名称和扩展名%%f

相关内容