ファイルブラウザ
2016.3.20 を更新:
PowerShell は最近のほぼすべての最新の Windows インストールのネイティブ コンポーネントであるため、C# フォールバックは不要になったと宣言します。Vista または XP との互換性のためにまだ必要な場合は、新しい回答に移動しました。この編集から始めて、スクリプトをバッチ + PowerShell ハイブリッドとして書き直し、複数選択を実行する機能を組み込みます。読みやすく、必要に応じて微調整するのが非常に簡単です。
<# : chooser.bat
:: launches a File... Open sort of file chooser and outputs choice(s) to the console
:: https://stackoverflow.com/a/15885133/1683264
@echo off
setlocal
for /f "delims=" %%I in ('powershell -noprofile "iex (${%~f0} | out-string)"') do (
echo You chose %%~I
)
goto :EOF
: end Batch portion / begin PowerShell hybrid chimera #>
Add-Type -AssemblyName System.Windows.Forms
$f = new-object Windows.Forms.OpenFileDialog
$f.InitialDirectory = pwd
$f.Filter = "Text Files (*.txt)|*.txt|All Files (*.*)|*.*"
$f.ShowHelp = $true
$f.Multiselect = $true
[void]$f.ShowDialog()
if ($f.Multiselect) { $f.FileNames } else { $f.FileName }
これにより、ファイル選択ダイアログが表示されます。
You chose C:\Users\me\Desktop\tmp.txt
選択の結果はコンソールに出力されます。強制的に単一のファイルを選択する場合は、$f.Multiselect
プロパティを に変更します$false
。
(PowerShell コマンドはJust Tinkering Blogから容赦なく盗み出されました。)やなど、設定できるその他のプロパティについては、 OpenFileDialog クラスのドキュメントを参照してください。Title
InitialDirectory
フォルダ ブラウザ
更新 2015.08.10:
フォルダー チューザーを呼び出すための COM メソッドが既に存在するため、フォルダー チューザーを開いてパスを出力できる PowerShell ワンライナーを作成するのは非常に簡単です。
:: fchooser.bat
:: launches a folder chooser and outputs choice to the console
:: https://stackoverflow.com/a/15885133/1683264
@echo off
setlocal
set "psCommand="(new-object -COM 'Shell.Application')^
.BrowseForFolder(0,'Please choose a folder.',0,0).self.path""
for /f "usebackq delims=" %%I in (`powershell %psCommand%`) do set "folder=%%I"
setlocal enabledelayedexpansion
echo You chose !folder!
endlocal
このBrowseForFolder()
メソッドでは、4 番目の引数で階層のルートを指定します。有効な値のリストについては、ShellSpecialFolderConstantsを参照してください。
これにより、フォルダ選択ダイアログが表示されます。
You chose C:\Users\me\Desktop
選択の結果はコンソールに出力されます。
など、設定できるその他のプロパティについては、 FolderBrowserDialog クラスのドキュメントを参照してくださいRootFolder
。私の元の .NET PowerShell および C# ソリューションは、必要に応じてこの回答のリビジョン 4System.Windows.Forms
で見つけることができますが、この COM メソッドの方が読みやすく、維持しやすいです。