绝对路径:分隔路径并以字符串形式保存

时间:2012-05-10 04:40:20

标签: batch-file

使用批处理命令如何从字符串中获取文件夹路径/目录?

例如,如果我有字符串“C:\ user \ blah \ abc.txt”我如何分割字符串以便我可以获取文件夹部分,即“C:\ user \ blah” \“吗

如果在批处理文件的命令行中传递字符串“C:\ user \ blah \ abc.txt”,如何将该字符串拆分为文件夹部分?

REM // Grab "C:\user\blah\abc.txt" from the command line
SET path="%*" 
REM // The following doesn't successfully capture the "C:\user\blah\" part
SET justFolder=%path:~dp1%

2 个答案:

答案 0 :(得分:1)

~dp选项仅适用于批处理参数(%1%2 ...)或FOR替换参数(%% a %% b ...)。阅读HELP CALL

因此,要实现您的目标,请尝试以下代码

call :setJustFolder "%*"
echo %justFolder%
goto :eof

:setJustFolder
set justFolder=%~dp1
goto :eof

另外,我个人的偏好是不添加“围绕用户输入的文件名。我会将之前的代码简单地编码为

set justFolder=%~dp1
echo %justFolder%

答案 1 :(得分:1)

如果要从字符串或当前工作目录获取路径几乎相同。

set "myPath=%~dp1"
echo %myPath%

或者,如果您想从变量中获取它,可以使用FOR/F

set myPath=C:\windows\xyz.txt
for /F "delims=" %%A in ("%myPath%") do echo %%~dpA