我不幸使用了一个程序,该程序要求传递给它的所有文件名都是有效的 URL。(不,我不知道为什么。)我不必file:
每次都拖放到命令行和手工制作 URL,而是将一个批处理文件放在一起,我可以简单地将文件从 Windows GUI 拖放到该批处理文件上。
一个完整的、正确的 URL 编码器超出了我的需要或兴趣(无论如何,应用程序阻塞的大多数字符在 Windows 文件名中都无效),但我需要解决的两种情况是反斜杠和空格。反斜杠很容易通过变量替换语法 ( SET URL=%URL:\=/%
) 处理,但空格很棘手——%
对于 URL 和批处理文件来说都是特殊的。
我熟悉的两种类型的批处理转义 ( ^%
, %%
) 都不允许变量替换按预期运行,而且我在谷歌搜索解决方案方面没有任何成功。任何批次大师可以帮助我吗?
这是我到目前为止所拥有的:
@ECHO OFF
SETLOCAL
SET URLPATH=file:/%~dp1
SET URLPATH=%URLPATH:\=/%
REM none of these work
REM SET URLPATH=%URLPATH: =%20%
REM SET URLPATH=%URLPATH: =%%20%
REM SET URLPATH=%URLPATH: =^%20%
REM works; I just need to figure out how to generate it
SET URLPATH=file:/C:/Documents%%20and%%20Settings/bblank/example.dat
stupidapp.exe %URLPATH%
ENDLOCAL