Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
重命名Windows批处理脚本中的多个文件扩展名_Windows_Batch File - Fatal编程技术网

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

重命名Windows批处理脚本中的多个文件扩展名,windows,batch-file,Windows,Batch File,我需要递归地搜索目录,当找到具有特定名称的文件时,将其重命名。关键是我还需要能够在以后重新命名它 for /r %%x in (*.aspx) do move %%x %%x.txt 上面的方法可以继续使用,但我无法计算出在以后重新命名它的语法 我的下一个想法是不是添加一个扩展,也许重命名扩展,但我不知道怎么做 任何人都有任何想法。我一直在寻找dos,他从来都不是我的好朋友 如果这比vbs更简单的话,我会很高兴的。似乎你想以某种方式“隐藏”文件。这可以通过从文件名中剥离扩展名来实现。不幸的是,

我需要递归地搜索目录,当找到具有特定名称的文件时,将其重命名。关键是我还需要能够在以后重新命名它

for /r %%x in (*.aspx) do move %%x %%x.txt
上面的方法可以继续使用,但我无法计算出在以后重新命名它的语法

我的下一个想法是不是添加一个扩展,也许重命名扩展,但我不知道怎么做

任何人都有任何想法。我一直在寻找dos,他从来都不是我的好朋友

如果这比vbs更简单的话,我会很高兴的。

似乎你想以某种方式“隐藏”文件。这可以通过从文件名中剥离扩展名来实现。不幸的是,这不能在
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
可能重复

但会是这样的

ren *.X *.Y

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

注意:这些是批处理文件中使用的命令行,当直接从命令提示符执行时,请使用
%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"

您能否澄清“以后可以重新命名”的含义?如果您正在寻找
vbs
解决方案,请使用谷歌或初始指针。VBScript(或JScript)语言更具表现力,可以更好地构造代码。然后使用
cscript.exe
将vbs解决方案包含到批处理中file@MichaelFreidgeim你错了。你把它放进了哪个批处理文件?这是您在控制台上看到的,没有回声关闭。您的答案使用%%x,但在图像中您使用了%x。单个百分比有效。@MichaelFredgeim No Michael,批处理脚本在运行时在控制台上显示单个百分比,但其中有两个百分比符号。当直接从命令提示符运行from时,使用单个百分比。我想你从编辑中注意到了这些内容,主题行提到了批处理文件,这是相关的。我的回答往往不像在这里时那样简洁,我知道我的评论很少。助教。请注意我在上面的脚本中所做的更正,我将您的信息放在了更突出的位置。