我需要在文件夹内的每个*.lnk
文件中插入一个后脚本。
我在这里找到了一些代码并对其进行了修改,以实现我的目标,但是由于某种原因,我使用的每个代码都多次添加了后脚本:
for /f %f in ('dir /b "C:\Test\*"') do ( cd "%i" & ren *.lnk ??????????????????????????????????????????????????????-18.* )
上面一行的结果是该文件夹中的每个*.lnk
文件都将重命名为:
example-18-18-18-18-18-18-18-18-18-18-18-18.lnk
期望的结果是:example-18.lnk
原始文件名是:example.lnk
关于我在做什么错的任何线索?
答案 0 :(得分:1)
好吧,我很确定您在目录C:\Test
中有12个项目,对吗?因为似乎同一文件example.lnk
连续重命名了12次……
无论如何,您的代码中存在几个问题:
for /f %f
循环,但是您正在使用%i
而不是在循环正文中; for /f
循环与dir
一起解析wildcards(*
,?
),但是您也在循环正文中指定了这就是为什么同一文件一次又一次重命名的原因; cd
命令以预先更改工作目录; ?
个字符的序列完全没有用,只需放置一个*
个字符; ?
个字符(不匹配.
)的序列,而不是单个*
个字符(匹配所有字符),因为*-18.*
会导致附加到扩展名-18
后的 后面的字符串.lnk
上;但是,为防止这种情况,您可以使用~
-modifiers,例如%~nf-18%~xf
或%~nf-18.*
; 那呢:
cd /D "C:\Test" && for /F "delims= eol=|" %f in ('dir /B /A:-D "*.lnk"') do ren "%f" "%~nf-18.*"
这样做: