【发布时间】:2017-07-30 17:27:29
【问题描述】:
Cmd.exe 在执行 for 命令期间关闭和终止批处理文件。谁能帮我修改 .bat 文件以使其运行完成?
批处理文件有以下几行:
start "" "autohotkey.exe" "p:\script.ahk"
timeout /t 3
cd C:\windows\system32\wbem
for /f %D in ('wmic volume get DriveLetter^, Label ^| find "EHD_BACKUP"') do set myDrive=%D
timeout /t -1
cd C:\Program Files\VeraCrypt
使用 pause 命令我确定 .bat 文件运行良好,直到 CMD.exe 自动关闭时执行“for”命令,这会阻止批处理文件完成。
当我在命令窗口中(在 .bat 文件之外)单独运行“for”命令时,它会按预期运行并为 myDrive 变量提供预期的响应。但是运行成功后会返回2个提示-如下:
C:\windows\system32>for /f %D in ('wmic volume get DriveLetter^, Label ^| find "EHD_BACKUP"') do set myDrive=%D
C:\windows\system32>set myDrive=K:
C:\windows\system32>
如何修改我的批处理文件,使其在 for 命令期间不会关闭?对 for 的双线响应不寻常,我怀疑这是导致此问题的原因,但不知道如何解决。
【问题讨论】:
-
在你的批处理脚本中,在你有
cd C:\Program Files\VeraCrypt.exe的for 命令之后,VeraCrypt.exe是一个目录的名称吗?由于Program和Files之间有一个空格,您可能还想用引号将路径括起来。 -
嗨 - 这是我输入问题时的错误。 .bat 文件实际上是 CD c:\program files\veracrypt(我错误地添加了 .exe)。我在我的原始问题中更正了这一点。问题是我的 .bat 文件在到达此命令之前终止 - 它在运行 for /f %D .... 行时终止。谢谢!
-
当您从 cmd 窗口启动批处理,而不是从资源管理器单击 时,您会看到错误消息
D can't be processed here。这是因为 FOR 命令需要在批处理文件中占双倍百分比(就像 HELP FOR 解释的那样)
标签: batch-file cmd