这可能有点不优雅,但将其放入批处理文件中:
setlocal enabledelayedexpansion
︙
for %%f in (*) do (
set tempname=%%f
set tempname=!tempname:xyz=!
if %%f == !tempname! (把你的sed命令放在这里) %%F
)
该 setlocal
命令可以在批处理文件的开头,
或者就在之前 for
循环,或其间的任何地方。
(我建议把它放在批处理文件的开头,
就在这之后 @echo off
。)
跑 cmd /?
和 setlocal /?
有关此命令的更多信息。
基本上,它允许您以一种有点理智的方式处理循环中的变量。
我认为你对你理解的批处理文件了解得足够多
那 FOR 变量 IN( 组 )DO 命令
循环遍历文件名 set
(可以包括通配符,如 *
)
设置 variable
到每个文件名,并执行 command
。
括号(后 do
,最后)
让我们有一个多线 command
。
普通变量语法不起作用 %% 变量
S,
所以我们复制 %%f
到一个临时变量。
然后我们使用 % 变量 : STR1 = STR2 %
(查找和替换)变量扩展的形式
替换所有出现的 xyz
在 %tempname%
用null。
... 除了 因为我们在一个循环中,
我们必须使用 !
代替 %
(这是在哪里 setlocal enabledelayedexpansion
进来)。
然后我们将删节的文件名与原始名称进行比较(仍在 %%f
)。
如果它们是平等的,那么一定不能有任何实例 xyz
在文件名中,我们运行您的命令。
如果它们不同,那意味着替代
发现至少一个 xyz
所以我们 别 运行你的命令。
附:我相信你不需要 call
命令。