2014-04-30 100 views
1

我需要递归搜索目录,并且当找到特定名称的文件时,将其重命名。关键是我需要也可以稍后重新命名它。在Windows批处理脚本中重命名多个文件扩展名

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

上述工作向前发展,但我无法制定出语法来重新命名它之后。

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

任何人有任何想法。我通过dos搜索从来不是我的好朋友。

我会很高兴,如果这在哪里vbs如果更容易。

+1

你能澄清你所说的“稍后能够将其重命名回”是什么意思? – aphoria

+0

如果您正在寻找'''vbs'''解决方案,请使用Google或http://stackoverflow.com/questions/22636917/vbscript-for-moving-like-files获取初始指针。 VBScript(或JScript)语言更富有表现力,可以更好地构建代码。然后,您可以使用'''cscript.exe'''将vbs解决方案包含到您的批处理文件中。 – xmojmr

回答

0

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

for /r %%x in (*.aspx) do call :disable %%x 

goto :eof 

:disable 
    ren %1 %~n1.old 
    goto :eof 

子例程是必需的,因为你不能在for循环中写%〜NX。假设for环发现了一个文件index.aspx然后在子程序重命名将扩大到:

​​

您可以通过“老”和“新”扩展为参数

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.%2ren "%1" %~n1.%2

1

注:这些是一个批处理文件内使用命令行,并直接从命令提示执行它们时再使用%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" 
+0

第二个命令返回“%% x此时意外。” –

+0

@MichaelFreidgeim你错了。你把哪个批处理文件放入? http://i.imgur.com/eA51k2g.png这就是你在控制台上看到的没有回声的情况。 – foxidrive

+0

您的答案使用%% x,但在图片中使用%x。单个百分比正在工作。 –

相关问题