我从另一个讨论中得到一个文件选择器,我想更改InitialDirectory值。现在是:
<# :
...
setlocal
for /f "delims=" %%I in ('powershell -noprofile "iex (${%~f0} | out-string)"')
...
goto :EOF
: #>
Add-Type -AssemblyName System.Windows.Forms
$f = new-object Windows.Forms.OpenFileDialog
$f.InitialDirectory = pwd
$f.Filter = "ucsdb backup (ucsdb.*)|ucsdb.*"
$f.ShowHelp = $false
$f.Multiselect = $false
[void]$f.ShowDialog()
if ($f.Multiselect) { $f.FileNames } else { $f.FileName }
并打开当前目录,但我想打开一个子文件夹。我怎么写Batch&#34;%cd%\ UCSM_Files \&#34;在InitialDirectory?
抱歉我的英文不好
答案 0 :(得分:1)
你可以采取多种方式,真的。最简单的方法是在pwd
中评估$()
字符串中的$f.InitialDirectory = "$(pwd)\UCSM_Files"
:
$f.InitialDirectory = "{0}\UCSM_Files" -f (pwd)
或者您可以使用字符串格式。
df
答案 1 :(得分:0)
从变量语法看,您似乎已经尝试在PowerShell中执行此操作。如果是这样,您可以使用Join-Path
cmdlet(以及$PWD
自动变量):
$f.InitialDirectory = Join-Path -Path $PWD -ChildPath UCSM_Files
答案 2 :(得分:0)
您可以尝试在批处理中设置环境变量,然后在powershell中使用它:
<# :
...
set "initialdir=%~dp0"
...
#>
$f.InitialDirectory = "$($env:initialdir)UCSM_Files"
...
我还注意到你禁用了multiselect但是无论如何都要检查它:
$f.Multiselect = $false
if ($f.Multiselect) { $f.FileNames } else { $f.FileName }