我尝试使用我在下面的 for 循环中设置的变量 myVar 重命名文件。问题是重命名不起作用。谁能告诉我为什么?
For /F %%A in ('"type tmpFile2.txt"') do set myVar=%%A
ren file1.txt file2%myVar%.txt
我尝试使用我在下面的 for 循环中设置的变量 myVar 重命名文件。问题是重命名不起作用。谁能告诉我为什么?
For /F %%A in ('"type tmpFile2.txt"') do set myVar=%%A
ren file1.txt file2%myVar%.txt
我敢打赌,您的代码放在括号内,如下所示:
if some == comparison (
For /F %%A in ('"type tmpFile2.txt"') do set myVar=%%A
ren file1.txt file2%myVar%.txt
)
如果是这种情况,您需要使用延迟扩展来获取在块内修改的变量的值:
setlocal EnableDelayedExpansion
if some == comparison (
For /F %%A in ('"type tmpFile2.txt"') do set myVar=%%A
ren file1.txt file2!myVar!.txt
)
有关详细信息,请在此或其他网站上搜索“延迟扩展”。
嗨,请尝试此代码。
for /F "tokens=*" %%i in (myfile.txt) do (
set %filename% = %%i
ren file1.txt file2%filename%.txt
)
您的代码正在运行,可能问题出在 tmpfile2.txt 内容(令牌)上,
或者变量值有空格,这就是为什么不工作的原因,
没有 tmpfile2 的内容,我们不知道为什么不起作用。
试试这种方式看看发生了什么:
For /F "delims= usebackq" %%# in ("tmpFile2.txt") do (Echo "myVar=%%#" & set "myVar=%%#")
Echo Rename "file1.txt" "file2%myVar%.txt"
Rename "file1.txt" "file2%myVar%.txt"
或者这个:
For /F "delims= usebackq" %%# in ("tmpFile2.txt") do (Rename "file1.txt" "file2%%#.txt")