ショートカットを実行したフォルダパスをスクリプトに反映した
概要
PowerShellスクリプトを一つのフォルダで管理して、ショートカットを使うフォルダ内に作成して使用することがあるためパス入力が手間だった。ショートカットの実行時にフォルダパスを反映することで解消した。
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]
でパスを取り出す
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%"
Author And Source
この問題について(ショートカットを実行したフォルダパスをスクリプトに反映した), 我々は、より多くの情報をここで見つけました https://qiita.com/arduino-sette/items/408389f5d7b7bfda00a0著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .