0

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

例如,如果我有字符串“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%
4

2 回答 2

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%
于 2012-05-10T05:24:50.547 回答
1

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

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

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

set myPath=C:\windows\xyz.txt
for /F "delims=" %%A in ("%myPath%") do echo %%~dpA
于 2012-05-10T05:26:25.570 回答