[windows]建立捷徑的bat檔CreateShortcut.bat

@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)之間加了波浪符號(~)與相關的修飾字詞後, 就會有擴充的支援。
 

  1. %0:第0個參數, 表示批次檔本身。
  2. %~d0:Dirver, 批次檔存在的磁碟機代號。
  3. %~p0:Path, 批次檔的路徑位置(不包含磁碟機代號)。
  4. %~n0:批次檔的檔案名稱。
  5. %~x0:批次檔的副檔名。
  6. 所有的修飾字詞可以混搭使用, 所以%~dp0即是批次檔所在的完整路徑。
  7. 修飾字詞還有~f, ~a, …等, 請參考程式說明頁面。
本篇發表於 Windows系統。將永久鏈結加入書籤。