2017-07-30 75 views
0

Cmd.exe在執行for命令期間關閉並終止一個批處理文件。任何人都可以幫助我修改.bat文件,使其運行完成?Cmd.exe在「for」命令期間關閉

批處理文件具有以下線:

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 

使用暫停命令我已確定的bat文件運行良好,直到的「爲」命令的執行時的CMD.exe自動關閉,從而防止從批處理文件完成。

當我在命令窗口中單獨運行「for」命令(在.bat文件之外)時,它按預期方式運行,併爲​​變量提供預期的響應。然而,它成功運行後返回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> 

如何修改我的批處理文件,因此它不會在對命令關閉?雙線的反應是不尋常的,我懷疑這是這個問題的原因,但不知道如何解決它。

+0

在你的批處理腳本後爲命令你'CD C:\ Program Files文件\ VeraCrypt.exe',是'VeraCrypt.exe'一個目錄的名稱?由於'Program'和'Files'之間有空格,因此您可能還想用引號括住路徑。 –

+0

嗨 - 這是我在輸入問題時的錯誤。 .bat文件實際上說CD c:\ program files \ veracrypt(我錯誤地添加了.exe)。我在原始問題中糾正了這個問題。問題是我的.bat文件在到達此命令之前終止 - 它在運行for/f%D ....行時終止。謝謝! – Ptoger

+3

當您從cmd窗口開始批處理時,而不是從資源管理器單擊時,則會看到錯誤消息「D無法在此處處理」。這是因爲FOR命令期望在批處理文件中有兩倍的百分比(如HELP FOR解釋) – jeb

回答

0

您必須在變量

{%變量之前使用的替代%%% | %%變量}:必需。代表可替換的參數。從命令提示符使用%變量執行。使用%%變量在批處理文件中執行for命令。變量區分大小寫,並且必須用alpha值(例如%A,%B或%C)表示。

https://technet.microsoft.com/en-us/library/bb490909.aspx

+0

工作正常!非常感謝! – Ptoger

+0

也可以使用除'#'或'$'等字母字符以外的其他字符作爲循環變量。如果因爲使用多個標記而不需要多個循環變量,我更喜歡使用'#'作爲自己的批處理文件作爲循環變量。例如,在第一個標記被分配給循環變量「A」的情況下,例如'tokens = 1,3,5-8 *','A','B','C'等通常會更好,根據[ASCII表](http://www.asciitable.com/)是'B',依此類推到下一個變量。 – Mofi