2017-06-19 139 views
1

我剛剛寫了一個快速批處理文件,它可以將某個目錄輸入上載到手機配置中,而無需用戶手動完成。使用批處理文件傳遞空格中的空格

@echo off 
set /p title= Contact name? 
set /p number= Contact phone number? 
start "" http://admin:[email protected]/!mod%%20cmd%%20FLASHDIR0%%20add-item%%20104%%20(cn=%title%)(e164=%number%)(h323=%title%) 

批處理文件獲取變量,然後將它們添加到啓動命令中。腳本就這樣工作,並登錄到電話界面,然後上傳目錄輸入。

如果我輸入John作爲標題和123456作爲數字,我會得到一個帶有此鏈接的新瀏覽器窗口http://172.31.2.214/!mod%20cmd%20FLASHDIR0%20add-item%20104%20(cn=John)(e164=123456)(h323=John)

批處理文件起作用,用戶可以使用此批輸入目錄條目。但問題是,大多數標題包含多個單詞。問題是,如果我在第一個變量下輸入John Smith,則鏈接如下所示: admin:[email protected]/!mod%20cmd%20FLASHDIR0%20add-item%20104%20(cn = John

第二部分(標題變量之後的空格)被刪除,可以做些什麼來強制批處理文件發送帶有%20而不是空格字符的URL?

回答

1

您可以%variable:old=new%用一個字符串替換字符串中的變量。這樣,要用其他東西替換空格,可以使用%variable: =somethingelse%

但是,問題在於您試圖用%20替換,其中包含%符號。這將被解釋爲一個變量名稱。如果你真的想使用%20,而不是+,你將不得不使用delayed expansion逃脫百分號作爲解釋here

@echo off 
setlocal EnableDelayedExpansion 
set /p title= Contact name? 
set /p number= Contact phone number? 
set urltitle=!title: =%20! 
set urlnumber=!number: =%20! 
setlocal DisableDelayedExpansion 
start "" http://admin:[email protected]/!mod%%20cmd%%20FLASHDIR0%%20add-item%%20104%%20(cn=%urltitle%)(e164=%urlnumber%)(h323=%urltitle%) 
+0

感謝您的幫助!我現在解決了這個問題;) – Demions

+0

很高興我能幫上忙。如果此答案或任何其他人解決了您的問題,請將其標記爲已接受。 – Lucidiot

1

在URL編碼中,空格被表示爲+:。123 456成爲123+456In a URL, should spaces be encoded using %20 or +?)所以,你需要的是替代空間給定的字符串並使用+這實際上是你如何做到這一點:

@echo off 
set /p title= Contact name? 
set /p number= Contact phone number? 
set urltitle=%title: =+% 
set urlnumber=%number: =+% 
start "" http://admin:[email protected]/!mod%%20cmd%%20FLASHDIR0%%20add-item%%20104%%20(cn=%urltitle%)(e164=%urlnumber%)(h323=%title%) 

如果你想編碼空格作爲%20相反,這裏是你的代碼:

@echo off 
setlocal EnableDelayedExpansion 
set /p title= Contact name? 
set /p number= Contact phone number? 
set urltitle=!title: =%%20! 
set urlnumber=!number: =%%20! 
start "" http://admin:[email protected]/!mod%%20cmd%%20FLASHDIR0%%20add-item%%20104%%20(cn=%urltitle%)(e164=%urlnumber%)(h323=%title%) 
+0

你鏈接的問題最upvoted回答說:「從理論上講,我認爲你應該有'example.com/foo%20bar?foo + bar'後面的'?'和'+'之前的'%20'「。這個問題中使用的參數都是URL的一部分。沒有'?'。 –

+0

更新了我的答案。 – MichaelS

+0

感謝您的幫助!我更正了批處理文件,現在它可以正常工作。 – Demions

相關問題