3

我尝试使用我在下面的 for 循环中设置的变量 myVar 重命名文件。问题是重命名不起作用。谁能告诉我为什么?

For /F  %%A in ('"type tmpFile2.txt"') do set myVar=%%A
ren file1.txt file2%myVar%.txt
4

3 回答 3

3

我敢打赌,您的代码放在括号内,如下所示:

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
)

有关详细信息,请在此或其他网站上搜索“延迟扩展”。

于 2013-05-17T13:13:24.987 回答
1

嗨,请尝试此代码。

 for /F "tokens=*" %%i in (myfile.txt) do (
    set %filename% = %%i
    ren file1.txt file2%filename%.txt
    )
于 2013-05-17T11:22:15.897 回答
0

您的代码正在运行,可能问题出在 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")
于 2013-05-17T10:34:14.350 回答