如何在Windows批处理文件中打印文件路径?

时间:2018-10-12 10:38:09

标签: windows batch-file

我有一个文本文件,在其中存储“文件名”及其路径

示例

Modules\App\a.txt
Modules\Engine\b.txt

我可以使用@echo %%~nxA获取“文件名”。

但是,当我尝试@echo %%~pA时,它会打印我的当前Windows路径文件路径

示例

当我从D:\ Temp执行脚本时,它会在\ Temp之前加上

\Temp\Modules\App\a.txt
\Temp\Modules\Engine\b.txt

但是,输出应为'Modules\App\a.txt'而不是'\Temp\Modules\App\a.txt'

简而言之,我正在寻找一个等效于dirname的Windows

1 个答案:

答案 0 :(得分:0)

您似乎想要相对路径。 for无法提供此功能,但是您可以解决它-只需删除当前文件夹路径即可:

@echo off
setlocal enabledelayedexpansion

(echo Modules\App\a.txt
 echo Modules\Engine\b.txt)>file.txt

for /f "delims=" %%A in (file.txt) do (
  set "tmp=%%~fA"
  REM set "tmp=%%~dpA"
  echo !tmp:%cd%\=!
)

结果:

Modules\App\a.txt
Modules\Engine\b.txt