如何从 Windows .bat 文件中获取相关目录/部分路径以显示为回显输出?
谈论一切,但。
我找到了驱动器号、文件名、扩展名、缩短 (8.3) 名称和完整路径 - 但没有相对路径。
我正在运行一个递归FOR /R
循环;它遍历子目录。我想要一些东西 - 没有二十个字符的无用路径信息 - 告诉我每个重复文件所在的目录......而无需将 .bat 文件硬编码到某个目录/路径中?
也许解决方案是测量脚本路径的长度并将其从完整路径的前面切掉?但我不知道如何操纵它。
脚本可能位于许多位置:
F:\a.bat<BR>
F:\Dir1\fileA.txt<BR>
F:\Dir20\fileA.txt
C:\Users\Longusername\Desktop\Container\a.bat<BR>
C:\Users\Longusername\Desktop\Container\Dir1\fileA<BR>
C:\Users\Longusername\Desktop\Container\Dir20\fileA
现在我唯一的输出选项是 ( %%~nxG
):
fileA.txt
fileA.txt
这并没有告诉我每个文件在哪个目录中......或(%%~pnxG
)
\Users\Longusername\Desktop\Container\Dir1\fileA.txt
\Users\Longusername\Desktop\Container\Dir20\fileA.txt
我想要什么,从任何位置:
\Dir1\fileA.txt
\Dir20\fileA.txt
可能会错过领先的\
,但这可以忽略不计。如果可以在大多数窗口机器上工作,则允许使用除 echo 之外的其他选项。不过,它们可能会导致更多问题——因为我已经用 echo 找出了我的其他作品。
很简单,如果您考虑一下:只需删除当前目录路径 ( %cd%
):
@echo off
setlocal enabledelayedexpansion
for /r %%a in (*.txt) do (
set "x=%%a"
echo with \: !x:%cd%\=\!
echo without \: !x:%cd%\=!
)
顺便说一句:\folder\file
总是指驱动器的根 ( x:\folder\file
),所以它不完全是相对路径。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句