如何在批处理文件中使用 dir /b /s 命令不显示文件路径

如何在批处理文件中使用 dir /b /s 命令不显示文件路径

有什么方法可以绕过dir /b /s在文件中使用命令时显示文件路径吗?
目前,当我运行它时dir /b /s C:\WinPE_amd64 >dir.txt,它会输出如下内容:

C:\WinPE_amd64\file.txt
C:\WinPE_amd64\secondfile.txt
C:\WinPE_amd64\Folder\AnotherFile.txt

我想要的是这样的:

file.txt
secondfile.txt
AnotherFile.txt

答案1

使用 a 解析目录输出for /f并使用~nx修饰符仅返回名称+扩展名

在命令行上:

(for /f "delims=" %A in ('dir /B/S "C:\WinPE_amd64"') do @Echo=%~nxA)>dir.txt

在批处理中,将元变量的百分号加倍

@Echo off
( for /f "delims=" %%A in ('dir /B/S "C:\WinPE_amd64"') do Echo=%%~nxA
) >dir.txt

这是一个格式偏好的问题(或者为了避免行过长)

@Echo off
( for /f "delims=" %%A in (
    'dir /B/S "C:\WinPE_amd64"'
  ) do Echo=%%~nxA
) >dir.txt

编辑一个可能更快的替代方案是for /r

(For /r "C:\WinPE_amd64" %A in (*) Do @Echo=%~nxA)>dir.txt

包装 powershell 命令的另一种方法

powershell -nop -c "(dir 'C:\WinPE_amd64' -r -file).Name" >dir.txt

相关内容