在Windows批处理脚本中重命名多个文件扩展名

我需要recursionsearch目录,并find一个特定名称的文件,然后重新命名。 关键是我需要也可以稍后重新命名它。

for /r %%x in (*.aspx) do move %%x %%x.txt 

以上的工作向前,但我不能工作语法重新命名回来之后。

我的下一个想法是,而不是添加一个扩展名,也许重命名扩展名,但我不能解决如何。

任何人有任何想法。 我通过dossearch从来不是我的一个伟大的朋友。

如果这比较容易,我会很高兴。

注意:这些是在批处理文件中使用的命令行,当直接从命令提示符执行它们时,使用%x而不是%%x

这会重命名* .apsx以将.txt添加到最后。

 for /r %%x in (*.aspx) do move "%%x" "%%x.txt" 

编辑:下面有一个更改来处理递归重命名被遗漏了。

这将重命名* .apsx从最后删除.txt

 for /r %%x in (*.aspx.txt) do move "%%x" "%%~dpx%%~nx" 

看来你想以某种方式“隐藏”文件。 这可以通过从文件名剥离扩展来完成。 不幸的是,这不能在for循环中“内联”,所以你需要这样的东西。

 for /r %%x in (*.aspx) do call :disable %%x goto :eof :disable ren %1 %~n1.old goto :eof 

子例程是必需的,因为你不能在for循环中写入%〜nX。 假设for循环找到一个文件index.aspx那么子例程中的重命名将扩展为:

 ren c:\some\dir\where\the\files\are\stored\index.aspx index.old 

您可以将“旧”和“新”扩展名作为参数传递

 for /r %%x in (*.%1) do call :disable %%x %2 goto :eof :disable ren %1 %~n1.%2 goto :eof 

假设您将上述内容存储在名为“my_rename.cmd”的批处理文件中,您可以运行

 my_rename aspx old 

来“隐藏”这些文件。

要再次“启用”它们,您可以运行:

 my_rename old aspx 

如果您的文件存储在包含空格的目录中,则需要将ren %1 %~n1.%2更改为ren "%1" %~n1.%2

可能的重复在Windows上使用一个命令更改文件夹中的所有文件扩展名 。

但是会是这样的

 ren *.X *.Y 

其中“X”是原始扩展名,“Y”是您想要更改的扩展名。