我想知道我是否可以从cmd打开“open”-dialogbox,因此我可以使用它来选择要打开的正确文件。 (我已经知道如何直接从cmd打开文件,但这不是我感兴趣的)
目前我正在进行一个使用程序(例如program.exe)的项目。该程序需要一个modelfile(例如modelfile.mod)。 我通过编写:program.exe modelfile.mod来执行CMD中的程序,它可以工作。 我有许多具有不同名称的模板,但程序文件始终具有相同的名称。每次我需要执行程序时,我不想在CMD中写入,而是想创建一个批处理,我可以选择我想执行的modfile,然后以所选的modfile作为输入执行程序。
因此,我需要知道如何从cmd打开“open”-dialogbox,以及如何获取所选文件的名称以用于执行程序。
答案 0 :(得分:2)
如果你安装了PowerShell,你可以这样做:
@echo off
setlocal
set ps_cmd=powershell "Add-Type -AssemblyName System.windows.forms|Out-Null;$f=New-Object System.Windows.Forms.OpenFileDialog;$f.Filter='Model Files (*.mod)|*.mod|All files (*.*)|*.*';$f.showHelp=$true;$f.ShowDialog()|Out-Null;$f.FileName"
for /f "delims=" %%I in ('%ps_cmd%') do set "filename=%%I"
if defined filename (
echo You chose %filename%
) else (
echo You didn't choose squat!
)
goto :EOF
或者,如果您想分解powershell cmdlet以便于维护:
@echo off
setlocal
set "ps=Add-Type -AssemblyName System.windows.forms | Out-Null;"
set "ps=%ps% $f=New-Object System.Windows.Forms.OpenFileDialog;"
set "ps=%ps% $f.Filter='Model Files (*.mod)|*.mod|All files (*.*)|*.*';"
set "ps=%ps% $f.showHelp=$true;"
set "ps=%ps% $f.ShowDialog() | Out-Null;"
set "ps=%ps% $f.FileName"
for /f "delims=" %%I in ('powershell "%ps%"') do set "filename=%%I"
if defined filename (
echo You chose %filename%
) else (
echo You didn't choose squat!
)
goto :EOF
(从Just Tinkering Blog无情地提取PowerShell命令。)有关您可以设置的其他属性,请参阅OpenFileDialog Class文档,例如Title
和InitialDirectory
。