从绝对路径 Windows 脚本中删除子字符串

从绝对路径 Windows 脚本中删除子字符串

我是 Windows 脚本的新手,我有类似的绝对路径/bin/debug/test/abc.xyz.dll,我想删除文件名并仅获取类似输出的路径:/bin/debug/test/

我该怎么做?

答案1

您可以为此使用循环的扩展功能FOR- 即使它不会“循环”:

@echo off
setlocal EnableExtensions
set "arg=%~1"
for /f %%A in ('echo %arg%') do echo %%~pA

在这里您可以使用完整的文件名调用该脚本,可能会用引号来保护其中的空格。

编辑: 我原来使用的代码echo %%~nxA显然是错误的,抱歉。它将文件名与路径隔离开来,并返回文件名。上面的代码现在只返回路径(不带驱动器号)。

编辑2: 我很感谢@Karan指出这可以缩写为

@echo off
setlocal EnableExtensions
echo %~p1

因为扩展变量扩展语法不仅适用于FOR循环,还适用于论证扩展(参见CALL /?)。

相关内容