我试图通过命令行完成的是循环目录中的文件,并将它们重命名为一个连续的数字。我可以用下面的命令来实现这一点
set/a fileNum = 1 & for %f in (*.txt) do ( rename %~nf%~xf !fileNum!%~xf & set/a fileNum += 1 )
但问题是,如果不先cmd /V:ON
在命令行上执行,我就无法进行变量扩展。我试过这样做
cmd /V:ON & set/a fileNum = 1 & for %f in (*.txt) do ( rename %~nf%~xf !fileNum!%~xf & set/a fileNum += 1 )
但那也没用。所以我的问题是,有没有办法解决这个问题。根据这个帖子这我应该可以setlocal enabledelayedexpansion
在命令行上使用线程,但那不起作用。有没有办法解决这个问题。
答案1
如果您确实想要/必须直接在命令提示符上以单行方式执行此操作:
@>nul set filenum=1&@for %f in (*.txt) do @(cmd /v:on /c ECHO ren "%~nxf" "!fileNum!%~xf"&>nul set/a fileNum+=1)
ECHO
在验证其满足您的要求后,删除保存保护程序
答案2
cmd /V:ON on
如果不先执行命令行,我就无法进行变量扩展。
正确。但是下面的方法应该可行:
cmd /V:ON /c "set/a fileNum = 1 & for %f in (*.txt) do ( rename %~nf%~xf !fileNum!%~xf & set/a fileNum += 1)
进一步阅读
- Windows CMD 命令行的 AZ 索引 | SS64.com
- Windows CMD 命令(分类) - Windows CMD - SS64.com
- CMD.exe(命令 Shell)-Windows CMD - SS64.com- 启动一个新的 CMD shell 并(可选)运行命令/可执行程序。