Windows RENAME (REN) 命令如何解释通配符?
内置的帮助工具没有帮助 - 它根本不解决通配符。
在微软的TechNet XP联机帮助也好不了多少。以下是关于通配符的全部内容:
“您可以在任一文件名参数中使用通配符(
*和?)。如果您在 filename2 中使用通配符,则通配符表示的字符将与 filename1 中的相应字符相同。”
没有太大帮助 - 可以通过多种方式解释该语句。
在某些情况下,我已经成功地在filename2参数中使用通配符,但它一直是反复试验。我无法预测什么有效,什么无效。我经常不得不使用 FOR 循环编写一个小批量脚本来解析每个名称,以便我可以根据需要构建每个新名称。不是很方便。
如果我知道如何处理通配符的规则,那么我认为我可以更有效地使用 RENAME 命令,而不必经常求助于批处理。当然,了解规则也有利于批量开发。
(是的 - 这是我发布成对问题和答案的情况。我厌倦了不知道规则并决定自己进行实验。我想很多其他人可能对我的发现感兴趣)
我指的是使用批处理文件将文本添加到文件名末尾(但在扩展名之前)的问题,因为我遇到了同样的问题。使用带有所有更新的 Windows 7 32 位企业版(我知道,我知道......)我写了一个pdfrename.bat只有三行的小批处理文件:
评论,开始REM 并没有“隐藏”的延续迹象更多的行权
建议的命令,从@Karan 提供的源代码复制粘贴,注释掉REM
批处理采用的命令(加倍%):
REM Rework 2020-12-16
REM for %a in (*.txt) do ren "%~a" "%~na version 1%~xa"
for %%F in (*.pdf) do ren "%%~F" "%%~nF OdB%%~xF"
Run Code Online (Sandbox Code Playgroud)
从命令提示符运行命令 (3.),
for %F in (*.pdf) do ren "%~F" "%~nF OdB%~xF"
Run Code Online (Sandbox Code Playgroud)
工作正常。
但是pdfrename.bat从 Windows 资源管理器执行整个批处理文件失败。从命令提示符运行批处理文件pdfrename.bat会产生错误消息语法错误:
Die folgende Verwendung des Pfadoperators zur Ersetzung eines Batchparameters
ist ungültig: %~na version 1%~xa"
[...]
Run Code Online (Sandbox Code Playgroud)
你不需要懂德语。重要的一点是 …
Windows 命令提示符 (cmd.exe) 提供 FOR 命令。它可用于对目录中的任何文件进行操作。例子:
\> dir
28.05.2012 18:25 69 buildall.bat
28.05.2012 07:48 <DIR> include
28.05.2012 18:23 <DIR> sub-607
\> for %d in (*.bat) echo %d
Run Code Online (Sandbox Code Playgroud)
如何对给定目录中的所有子目录执行相同的操作(非递归)?这个想法是:
for %d in (sub-*) do (
cd %d
dosomething
cd ..
)
Run Code Online (Sandbox Code Playgroud)
上面的 for 语句没有找到 sub-607 因为它不是文件。
command-line ×3
batch-file ×2
windows ×2
batch ×1
cmd.exe ×1
comments ×1
rename ×1
windows-7 ×1