@ECHO OFF TITLE 建立 Xshell & Xftp 捷徑 mshta VBScript:Execute("Set a=CreateObject(""WScript.Shell""):Set b=a.CreateShortcut(a.SpecialFolders(""Desktop"") & ""\Xshell6Portable.lnk""):b.TargetPath=""%~dp0Xshell6Portable.exe"":b.WorkingDirectory=""%~dp0"":b.Save:close") mshta VBScript:Execute("Set a=CreateObject(""WScript.Shell""):Set b=a.CreateShortcut(a.SpecialFolders(""Desktop"") & ""\Xftp6Portable.lnk""):b.TargetPath=""%~dp0Xftp6Portable.exe"":b.WorkingDirectory=""%~dp0"":b.Save:close") echo Xshell & Xftp 捷徑已建立 pause
這個檔案必需存成bat檔才能正常執行,複製到CMD的環境執行會發生問題(%~dp0 會發生錯誤)。
快閃人生 【批次檔】%CD% 與 %~dp0
%CD%:Current Directory, 當前工作目錄位置
%~dp0:批次檔存在的目錄位置
關於%~dp0其實是%0參數的衍伸用法(可以使用CALL /?查閱詳細說明)
首先執行下面例子先看看結果:
@ECHO OFF CLS ECHO %%0 = %0 ECHO %%~d0 = %~d0 ECHO %%~p0 = %~p0 ECHO %%~n0 = %~n0 ECHO %%~x0 = %~x0
從CALL /?的說明頁面中, 得知在參數%n(%0, %1, … %9)之間加了波浪符號(~)與相關的修飾字詞後, 就會有擴充的支援。
- %0:第0個參數, 表示批次檔本身。
- %~d0:Dirver, 批次檔存在的磁碟機代號。
- %~p0:Path, 批次檔的路徑位置(不包含磁碟機代號)。
- %~n0:批次檔的檔案名稱。
- %~x0:批次檔的副檔名。
- 所有的修飾字詞可以混搭使用, 所以%~dp0即是批次檔所在的完整路徑。
- 修飾字詞還有~f, ~a, …等, 請參考程式說明頁面。