Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 在使用批处理文件为指定文件添加前缀时,由于括号';的缘故,它为第一个文件添加了两次前缀;[]和#x27;_Batch File_Prefix_Batch Rename - Fatal编程技术网

Batch file 在使用批处理文件为指定文件添加前缀时,由于括号';的缘故,它为第一个文件添加了两次前缀;[]和#x27;

Batch file 在使用批处理文件为指定文件添加前缀时,由于括号';的缘故,它为第一个文件添加了两次前缀;[]和#x27;,batch-file,prefix,batch-rename,Batch File,Prefix,Batch Rename,我正在尝试向cur dir和sub dir中的所有文件添加前缀,并使用以下代码成功地完成了此操作: @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 ( re

我正在尝试向cur dir和sub dir中的所有文件添加前缀,并使用以下代码成功地完成了此操作:

@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]
请告诉我该怎么办……

我不知道,但我会猜一猜。我有理由相信这是一个很好的猜测。删除括号(())括号并将命令放在一行上


如果你这样做了,但脚本仍然不起作用,我会仔细查看。

我不知道,但我会猜一猜。我有理由相信这是一个很好的猜测。删除括号(())括号并将命令放在一行上


如果您这样做了,脚本仍然无法运行,我将仔细查看。

问题是,可以找到重命名的文件并再次重命名

在代码中添加一个
ECHO重命名“%%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\bracket[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将被完全执行。

问题是,可以找到重命名的文件并再次重命名

在代码中添加一个
ECHO重命名“%%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\bracket[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
将被完全执行。

如果不测试它,我可以说
()
不是问题,如果不测试它,我可以说
()
不是问题