bat如何截取这样的字符串?

例如set str=Program Files (x86)\360Apps\Green\10101010\abc这个字符串中我想截取出Program Files (x86)\360Apps\Green\10101010\这一段,就是不要最后那个反斜杠后的字符串,该怎么做?这个字符串只是个例子,实际上长度是不确定的。

@echo off
set "str=C:\Program Files (x86)\360Apps\Green\10101010\abc"
for /f "delims=" %%i in ("%str%") do (echo %%~dpi)
pause

变量为一个完整路径用for 命令很容易处理.

追问

不是路径,但是类似路径

追答

这个得看你的字符串具体是怎样的.因为一个细微的不同截取方法都有可能不同.所以你最好将需要处理的字符串附上一部分以作为代码调试用.

追问

asdasd\qw234eAFwe\wer\abc
就类似这样的

追答

最后的 abc是否为固定值,字符串的 "\" 数量是否都相同.

追问

都不确定

追答@echo off&setlocal enabledelayedexpansion
set "str=Program Files (x86)\360Apps\Green\10101010\abc"
:c
set /a n+=1
for %%c in (%n%) do if "!str:~-%%c,1!"=="\" (set str1=!str:~0,-%%c!\&goto :r) else (goto c)
:r
echo %str1%
pause

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-11-12

如果是目录

cd /d "%str%\.."
set str2=%cd%
echo "%str2%"

追问

不是目录,但是类似目录的格式

第2个回答  2013-11-12
set str=Program Files (x86)\360Apps\Green\10101010\abc
for %%a in ("%str%") do echo %%~dpa

在for中取出这个个符串前面的路径