Windows批处理脚本URL解码

4
我有一个批处理脚本,可以在我的网络上触发vlc,问题是它根据浏览器中的URL打开。浏览器会自动将普通空格替换为%20,因此我需要在将文件路径发送到vlc之前,在批处理脚本中将其替换为普通空格。
以下是我的代码;
@echo off
set str=%1
set str=%str:~8%
set str=%str:%%20= %
START /D "C:\Program Files\VideoLAN\VLC\" vlc.exe %str%
pause

值得一提的是,这将在Windows 7和/或Vista系统上运行。

啊...我明白了。由于“%”是“%str%”变量的分隔符,因此使用字符串替换其值存在问题,该值还包含“%”。 - Kurt Pfeifle
为什么你跳过了八个字符?你似乎对你期望的URL语法有一些假设,但你没有写出这些假设。请将它们添加到问题中。 - oberlies
1个回答

9
@echo off
setlocal enabledelayedexpansion
set str=%~1
set str=%str:~7%
set str=!str:%%20= !
"C:\Program Files\VideoLAN\VLC\vlc.exe" "%str%"
pause

我做了一些其他的修复。如果脚本在参数周围加上引号,它总是有一个尾随的 " 。延迟扩展在这里给你第二组变量分隔符,避免了 % 的问题。此外,据我所见,start 不是必需的,除非您严重依赖于VLC将其自己的目录作为启动路径。

哎呀!-- 当我写下我的问题时,这个答案对我来说是不可见的。--尽管如此还是给你点赞。--我自己也在苦苦挣扎enabledelayedexpansion,但在这里却不能使其正常工作。 - Kurt Pfeifle

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接