Re: [批次] 取得目前所在資料夾位置?

看板EzHotKey作者 (UndeadSion)時間15年前 (2009/03/30 01:20), 編輯推噓1(101)
留言2則, 2人參與, 最新討論串2/2 (看更多)
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 ) =========================================================================

03/29 05:03,
%~dp0 →批次檔所在路徑,%cd% →目前工作路徑
03/29 05:03

03/29 09:11,
非常感謝樓上的朋友,我最後用上面的方法解決了,謝謝。
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)

03/31 00:27, , 1F
請問要如何取得目前工作路徑的磁碟代號呢?
03/31 00:27, 1F

03/31 00:56, , 2F
%cd:~0,2%
03/31 00:56, 2F
文章代碼(AID): #19pwtOBK (EzHotKey)
討論串 (同標題文章)
文章代碼(AID): #19pwtOBK (EzHotKey)