Windows批处理脚本:子串计算
问题描述:
我有这样的情况。我有一个文件中的网址列表。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
感谢
答
您需要%var:~start,end%
符号。例如,如果你运行这个:
@SET str1="http://www.domain.com/dir1/dir2/dir3/dir4/dir5/file1.txt"
@ECHO %str1:~37,-1%
它会打印/dir4/dir5/file1.txt
。
答
或者,您可以使用%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
事实上,你应该说 “VAR%:〜开始,长度%符号” – hoang 2011-11-22 10:22:20
@hoang:显然'-1'不是长度。如果使用正数,则它是一个长度,但OP不希望指定长度(因为子字符串是可变长度)。使用负数指定一个结束位置,这就是所谓的这里,因为OP希望子字符串在结束引号之前结束。 – Gabe 2011-11-22 13:46:23
你说的没错,我错过了一个负数是从头到尾的观点。 – hoang 2011-11-23 17:00:42