###概要
PowerShellスクリプトを一つのフォルダで管理して、ショートカットを使うフォルダ内に作成して使用することがあるためパス入力が手間だった。ショートカットの実行時にフォルダパスを反映することで解消した。
リンク先 (cmd)
C:\Windows\System32\cmd.exe /C pwsh "C:\Users\%username%\Documents\PowerShell\なんとか.ps1" "%CD%"
コマンドと引数
CMD /C "文字列" に指定されたコマンドを実行した後、終了します。
CMD /K "文字列" に指定されたコマンドを実行しますが、終了しません。
CMD /Q エコーをオフにします。
pwsh ver.5 まで powershell / ver.6 以降は pwsh
%CD% 実行したフォルダのパスを取り出す変数
###実装
ショートカットに書き込む
確認のため /C
を /Q /K
に置き換えて実行
###テスト
$Arg[0]
でパスを取り出す
なんとか.ps1
write-host "現在のディレクトリ"
get-location # (*1)
write-host "`$Args[0]の中身" $Args[0]
set-location $Args[0]
write-host "セットしました"
get-location # (*1)
Read-Host "終わります"
EXIT
実行結果
現在のディレクトリ
# 空
$Args[0]の中身 E:\folder
セットしました
終わります: # Enterを押す
Path # (*1)
----
E:\folder # (*2,3)
E:\folder
D:\folder>
*1 get-location
コマンドがRead-Host
の後に実行される
*2 パスに[ ]が含まれる場合-LiteralPath
を指定
*3 ドライブ直下の場合 (例)C:"
となるので"
を削除する
%CD%
ではスペースがあるとパスが切れる
###補足
スクリプトの実行ポリシーが許可されていない場合 -ExecutionPolicy RemoteSigned
C:\Windows\System32\cmd.exe /C pwsh -ExecutionPolicy RemoteSigned "C:\Users\%USERNAME%\Documents\PowerShell\なんとか.ps1" "%CD%"