2010-08-10 225 views
3

我有一個批處理腳本在我的網絡上爲我觸發vlc,問題是它基於瀏覽器中的URL打開。 瀏覽器會自動添加%20來代替常規空間,並且在將文件路徑發送到vlc之前,我需要在批處理腳本中再次用常規空間替換它。Windows批處理腳本url解碼

這是我的代碼;

@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系統上。

+0

這是什麼問題? – 2010-08-12 00:41:38

+0

啊......我明白了。由於'%'是'%str%'變量的分隔符,因此使用字符串替換的值也存在問題,該值也包含'%'。 – 2010-08-12 00:42:53

+0

爲什麼你跳過八個字符?你似乎對你所期望的URL語法有了一些假設,但你並沒有寫這些。請將它們添加到問題中。 – oberlies 2018-03-07 13:47:07

回答

7
@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將其自己的目錄作爲其啓動路徑。

+0

哎呀! - 當我寫下我對這個問題的評論時,這個答案對我來說是不可見的。 - 但** + 1 **。 - 我自己正在努力'enabledelayedexpansion',但沒有得到它在這裏工作。 – 2010-08-12 01:12:04