Windows批处理脚本:子字符串计算

Moh*_*igh 6 windows batch-file

我有这种情况.我在文件中有一个网址列表.

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

在上面的字符串http://www.domain.com/dir1/dir2/dir3中,所有网址都是常量.我需要在每个URL中提取剩余的路径.

我的意思是,我需要从上面的url获取最后一个字符串 /dir4/dir5/file1.txt

谢谢

Gab*_*abe 9

你需要这个%var:~start,end%符号.例如,如果你运行这个:

@SET str1="http://www.domain.com/dir1/dir2/dir3/dir4/dir5/file1.txt"
@ECHO %str1:~37,-1%
Run Code Online (Sandbox Code Playgroud)

它会打印出来/dir4/dir5/file1.txt.

  • @hoang:显然`-1`不是长度.如果使用正数,则它是一个长度,但OP不希望指定长度(因为子字符串是可变长度).使用负数指定结束位置,这是此处所要求的,因为OP希望子结束在结束引号之前结束. (2认同)

Hel*_*len 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%
Run Code Online (Sandbox Code Playgroud)

输出:

/dir4/dir5/file1.txt
Run Code Online (Sandbox Code Playgroud)