2011-06-08 121 views
6

我有這樣的情況。我有一個文件中的網址列表。Windows批處理腳本:子串計算

SET str1="http://www.domain.com/dir1/dir2/dir3/dir4/dir5/file1.txt"

在上述字符串http://www.domain.com/dir1/dir2/dir3是在所有的URL恆定。 我需要提取每個網址中的其餘路徑。

我的意思是,我需要得到從上面的網址,最後一個字符串爲/dir4/dir5/file1.txt

感謝

回答

9

您需要%var:~start,end%符號。例如,如果你運行這個:

@SET str1="http://www.domain.com/dir1/dir2/dir3/dir4/dir5/file1.txt" 
@ECHO %str1:~37,-1% 

它會打印/dir4/dir5/file1.txt

+0

事實上,你應該說 「VAR%:〜開始,長度%符號」 – hoang 2011-11-22 10:22:20

+2

@hoang:顯然'-1'不是長度。如果使用正數,則它是一個長度,但OP不希望指定長度(因爲子字符串是可變長度)。使用負數指定一個結束位置,這就是所謂的這裏,因爲OP希望子字符串在結束引號之前結束。 – Gabe 2011-11-22 13:46:23

+0

你說的沒錯,我錯過了一個負數是從頭到尾的觀點。 – hoang 2011-11-23 17:00:42

5

或者,您可以使用%variable:str_to_delete=%語法從變量中刪除字符串。這樣你就不必依賴字符串中的字符位置。

示例代碼:

@echo off 
set str1="http://www.domain.com/dir1/dir2/dir3/dir4/dir5/file1.txt" 

:: remove the common part of the path 
set str2=%str1:http://www.domain.com/dir1/dir2/dir3=% 
:: remove the quotes 
set str2=%str2:"=% 

echo.%str2% 

輸出:

/dir4/dir5/file1.txt