看板 EzHotKey 關於我們 聯絡資訊
start.bat ========================================================================== @echo off @IF EXIST "%ProgramFiles%\WowUSBVirusKiller" ( set PATH="%ProgramFiles%\WowUSBVirusKiller" start WowUSBSecurity.exe -c KillVirus.exe && start WowUSBAutoUpdate.exe ) ELSE IF EXIST "%ProgramFiles(x86)%\WowUSBVirusKiller" ( set PATH="%ProgramFiles(x86)%\WowUSBVirusKiller" start WowUSBSecurity.exe -c KillVirus.exe && start WowUSBAutoUpdate.exe ) ELSE ( set CD="%~dp0" *新增這行後解決。 start WowUSBSecurity.exe -c KillVirus.exe && start WowUSBAutoUpdate.exe ) =========================================================================
UndeadSion:%~dp0 →批次檔所在路徑,%cd% →目前工作路徑 03/29 05:03
MikageLin:非常感謝樓上的朋友,我最後用上面的方法解決了,謝謝。 03/29 09:11
好像有點誤解,補充說明一下 囧 %~dp0 批次檔所在路徑,例如 C:\Program Files\Mozilla Firefox\ 或 UNC 路徑,例如 \\Server\Share\Program Files\Mozilla Firefox\ %~d0 批次檔所在磁碟代號,例如 C: 或 UNC 路徑的雙反斜線 \\ %~p0 批次檔所在路徑,不含磁碟代號,例如 \Program Files\Mozilla Firefox\ 或開頭不帶雙反斜線的 UNC 路徑,例如 Server\Share\Program Files\Mozilla Firefox\ %cd% 目前工作路徑,非根路徑時後面不帶反斜線,例如 C:\Program Files\Mozilla Firefox 寫個批次檔測試一下比較容易瞭解 %~dp0 與 %cd% 的差別 @ECHO OFF ECHO %%~dp0 = %~dp0 ECHO %%cd%% = %cd% PAUSE 當批次檔與目前工作路徑都在 C:\Program Files\Mozilla Firefox\ 時,執行 批次檔結果如下 %~dp0 = C:\Program Files\Mozilla Firefox\ %cd% = C:\Program Files\Mozilla Firefox 請按任意鍵繼續 . . . 若批次檔所在路徑不變,目前工作路徑在 U:\USB\ 時,執行批次檔結果如下 %~dp0 = C:\Program Files\Mozilla Firefox\ %cd% = U:\USB 請按任意鍵繼續 . . . 若在批次檔中使用 SET 命令將 cd 指定為環境變數,則 %cd% 會被取代,不過 這不表示目前工作路徑被改變,所以 SET CD="%~dp0" 這樣寫應該會有問題說 假設批次檔與執行檔放在一起,以下有三種方法提供參考 1. 如同原文裡的範例,修改 PATH 環境變數 SET PATH=%~dp0 start Program.exe 2. 切換目前工作路徑 %~d0 cd %~dp0 start Program.exe 3. 以完整路徑方式執行 start "" "%~dp0Program.exe" -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 60.248.159.124 ※ 編輯: UndeadSion 來自: 60.248.159.124 (03/30 22:48)
chweng:請問要如何取得目前工作路徑的磁碟代號呢? 03/31 00:27
UndeadSion:%cd:~0,2% 03/31 00:56