我正在尝试为cur目录和子目录中的所有文件添加前缀,并且我使用以下代码成功:
@echo off
pushd "D:\z.Temp\Test\"
for /r %%j in (*) do (
rename "%%j" "[nilesh.uk.to]-%%~nxj"
)
popd
但是当我尝试为特定文件类型添加前缀时:
@echo off
pushd "D:\z.Temp\Test\"
for /r %%j in (*.html *.js) do (
rename "%%j" "[nilesh.uk.to]-%%~nxj"
)
popd
它有效,但它给我输出如:
demo1.html --> [nilesh.uk.to]-[nilesh.uk.to]-demo1.html
demo2.html --> [nilesh.uk.to]-demo2.html
demo3.html --> [nilesh.uk.to]-demo3.html
demo1.js --> [nilesh.uk.to]-[nilesh.uk.to]-demo1.js
demo2.js --> [nilesh.uk.to]-demo2.js
demo3.js --> [nilesh.uk.to]-demo3.js
此处每个第一个文件添加前缀两次
如果我从nilesh.uk.to删除[]然后它完美地工作但我想要前缀为[nilesh.uk.to] 请弗兰兹告诉我该怎么做....
答案 0 :(得分:1)
问题是,重命名的文件可以再次找到并重命名。
在代码中添加ECHO rename "%%j" "[nilesh.uk.to]-%%~nxj"
,您会看到类似
重命名“C:\ temp \ bracket \ demo1.txt”“[nilesh.uk.to] -demo1.txt”重命名 “C:\ temp \ bracket \ demo2.txt”“[nilesh.uk.to] -demo2.txt”重命名 “C:\ temp \ bracket \ demo3.txt”“[nilesh.uk.to] -demo3.txt”重命名 “C:\ TEMP \支架[nilesh.uk.to] -demo1.txt” “[nilesh.uk.to] - [nilesh.uk.to] -demo1.txt”
因此,您需要强制FOR
循环才能将每个文件只取一次。
您可以将其更改为
for /F "delims=" %%j in ('dir /s /b *.html') do (
....
这样可行,因为dir /s /b *.html
将在执行第一个重命名命令之前完成执行。
答案 1 :(得分:0)
我不知道,但我会猜一猜。我有理由相信这是一个很好的猜测。删除括号(())括号并将命令放在一行上。
如果你这样做并且剧本仍然不起作用,我会密切关注它。