filter - 如何使文件选择器对话框返回短路径?
问题描述
我有一个小问题,我正在使用的程序无法加载带有特殊字符(如 à、ó、ï、ç 等)的文件。我制作了一个脚本来更改文件的名称,但是当从脚本键入时,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 }
我不得不说,如果我选择纯文本文件,这个脚本可以完美运行。
我的问题是:有没有办法告诉文件选择器返回短路径而不是“长路径”?有没有更简单的方法可以从脚本中自动清除名称文件?如果不可能,我将限制自己手动更改名称。
干杯!
解决方案
推荐阅读
- .net - 将参数传递到 Microsoft Azure QnA 机器人
- windows-installer - 安装程序失败并显示消息“错误 -2:系统找不到指定的文件”
- android - 如何在 Coroutine Kotlin 中发送对象?
- javascript - 对象与数组:在状态中存储对象集合时是否有明显的赢家?
- python - 返回 2(2) 到 2*(2)
- vuejs2 - 如何将 vue-router 的 $route 和 $router 属性与 vue-class-component 一起使用?
- swiftui - SwiftUI:如何将视图限制为仅在一个方向上调整大小?
- mysql - 使用 $this->getDoctrine()->getManager(); 使用 Symfony 3.3 命令
- docker - 版本碰撞 React 应用程序时如何使用 docker build cache?
- javascript - Vue Single File 组件中的 SCSS 未编译