我是 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 /?)。