LoginSignup
0
0

More than 3 years have passed since last update.

ショートカットを実行したフォルダパスをスクリプトに反映した

Posted at

概要

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%      実行したフォルダのパスを取り出す変数

実装

ショートカットに書き込む
ショートカットでps1を呼んでカレントディレクトリのパスを投げるtestのプロパティ 2021_02_11 11_32_47.png
確認のため /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%"
0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0