我需要递归搜索目录,当找到特定名称的文件时,然后重命名它。 关键是我以后还需要能够将其重命名回来。
for /r %%x in (*.aspx) do move %%x %%x.txt
上述内容可以继续使用,但我无法制定语法来将其重命名回来。
我的下一个想法是不添加扩展程序,也许重命名扩展程序,但我不知道如何操作。
任何人有任何想法。 我用dos搜索过从来都不是我的好朋友。
如果这更容易的话,我会很高兴。
重要提示:这些是用于 在批处理文件中使用的命令行,直接从命令提示符执行它们时,请使用
%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