首页 > 解决方案 > 如何使文件选择器对话框返回短路径?

问题描述

我有一个小问题,我正在使用的程序无法加载带有特殊字符(如 à、ó、ï、ç 等)的文件。我制作了一个脚本来更改文件的名称,但是当从脚本键入时,Powershell 或 CMD 会找到该文件,它仅在手动选择路径并使用 TAB 时才有效。通过互联网搜索,我发现了一个可能的解决方案,即短路径。问题是我现在在同一个地方,我无法选择带有特殊字符的路径来连接命令以找到短路径。现在我在这个链接中使用了@rojo脚本的一个稍微修改过的版本:https ://stackoverflow.com/a/15885133

<# : 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
    dir %%~I /x >>dir.txt   
    copy %%~I success.pdf
)
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 = $false
[void]$f.ShowDialog()
if ($f.Multiselect) { $f.FileNames } else { $f.FileName }

我不得不说,如果我选择纯文本文件,这个脚本可以完美运行。

我的问题是:有没有办法告诉文件选择器返回短路径而不是“长路径”?有没有更简单的方法可以从脚本中自动清除名称文件?如果不可能,我将限制自己手动更改名称。

干杯!

标签: filterspecial-charactersscript

解决方案


推荐阅读