如何使用 echo 从 Windows 批处理文件中获取相对路径?

用户3082

如何从 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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用相对路径从批处理文件中执行PowerShell

批处理-使用相对路径复制文件

列出子目录中的文件并仅使用Windows命令行获取相对路径

在Windows批处理文件中,@@ echo off中的双'@'意味着不是@echo off吗?

如何在Windows CMD上使用相对路径?

Windows 10批处理文件的快捷方式相对路径(对于便携式应用程序)

在相对路径中运行批处理文件?

使用 C 在 Windows 上按相对路径打开文件

如何在Windows中设置图标的相对路径

如何从 Windows 窗体、Visual Studio 中背景的相对路径拍摄照片?

使用Windows快捷方式的相对路径

在Windows批处理文件中检索文件夹的绝对路径

使用powershell编辑Windows批处理文件中的文件

如何处理 Web API 中的静态文件相对路径?

如何在Windows批处理文件中获取Java程序的退出状态

如何在Java中获取exe的相对路径

如何正确转义Windows批处理文件中的括号?

如何在带有参数的git别名中获取文件的相对路径?

如何在Visual Studio中获取文件的相对路径?

如何从Rmarkdown中的.tex文件夹(相对路径)获取图像?

使用相对路径获取python中的所有png文件

使用Ansible在Windows中运行批处理文件

在Windows批处理文件中的SET上使用变量

如何从相对路径的MediaStore中读取文件?

如何在echo命令中制作包含> nul的批处理文件

如何使用 Windows 批处理文件以 24 小时格式获取文件修改日期

使用相对路径在JAR中读取文件

如何在Windows批处理文件中指定名称或路径中带有特殊字符的本地文件(如ä,ö,ü)?

如何定义文件的相对路径?