使用批处理命令如何从字符串中获取文件夹路径/目录?
例如,如果我有字符串“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%
答案 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