批处理文件:删除字符串路径中的文件名

时间:2019-01-07 14:26:03

标签: batch-file

我为Windows创建了一个小的批处理文件,但遇到一个小问题:

我定义了一个包含字符串的变量,即源文件的路径:

  

D:\ git_repos \ ALM_Sandboxs \ Sensor_Config \ StateManagement \ ssm_state.cpp

我想提取不带文件名的路径:

  

D:\ git_repos \ ALM_Sandboxs \ Sensor_Config \ StateManagement \

由于路径可以更改,因此文件名也可以更改,因此我很难这样做。有很多方法,但是我无法使用其中任何一种方法:

第一个是计算文件名的字符数:

set NumberOfCharacter

然后做

set FilePath=%FilePathTemp2:~,%NumberOfCharacter%%

但这不起作用。我只能使用带有以下语法的数字:     set FilePath=%FilePathTemp2:~,-18% ==>可行,但我想从变量中读取18

我已阅读到批处理解释器无法解析%对,所以我尝试了

for /l %%x in (1,1,%strlength%) do set %FilePathTemp2%=%FilePathTemp2:~,-1%

它也不起作用,因为for循环似乎无法在全局范围内更改FilePathTemp2。

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

Transform

(这是批处理文件语法。要在命令行上直接使用它,请将两个for %%a in (D:\git_repos\ALM_Sandboxs\Sensor_Config\StateManagement\ssm_state.cpp) do echo %%~dpa 替换为一个%%

%

解释了修饰符(如%%~dpa)的使用以及哪些修饰符是可能的。