如何通过CMD仅列出路径

问题描述 投票:0回答:1

我正在尝试列出硬盘驱动器上具有特定扩展名的所有文件的路径。

我正在使用

dir *.txt /s /b
,这是我的输出:

C:\Path\To\File\1.txt
C:\Path\To\File\2.txt
C:\Path\To\File\3.txt
C:\Path2\To\File\1.txt

但我只需要这些文件的路径,没有重复项和文件名。所以在那个演员阵容中它将是:

C:\Path\To\File\
C:\Path2\To\File\

欢迎任何帮助

cmd command-prompt
1个回答
-1
投票

由 Windows 命令处理器

cmd.exe
处理的批处理文件,用于列出系统驱动器上至少包含一个文件扩展名
.txt
的文件的所有目录是:

@echo off
setlocal EnableExtensions DisableDelayedExpansion
set "PreviousDirectory="
for /F "delims=" %%I in ('dir %SystemDrive%\*.txt /A-D-L /B /S 2^>nul') do (
    set "CurrentDirectory=%%~dpI"
    setlocal EnableDelayedExpansion
    if not "!PreviousDirectory!" == "!CurrentDirectory!" (
        endlocal
        echo %%~dpI
        set "PreviousDirectory=%%~dpI"
    ) else endlocal
)
endlocal

在后台启动了另一个命令进程来运行命令DIR,其输出由正在处理批处理文件的命令进程捕获。因此,在显示任何输出之前可能需要几秒钟甚至几分钟的时间,因为在命令处理文件名列表之前,首先会在整个系统驱动器中搜索文件扩展名为

.txt
的所有文件,这些文件不是链接为了

还可以使用带有以下命令行的批处理文件:

@echo off
setlocal EnableExtensions DisableDelayedExpansion
if exist "%SystemDrive%\*.txt" echo %SystemDrive%\
for /D /R "%SystemDrive%\" %%I in (*) do if exist "%%I\*.txt" echo %%I\
endlocal

在搜索整个系统驱动器时输出目录路径。但如果目录包含名称以

.txt
结尾的目录或链接,则可能会导致误报。此解决方案也不会输出具有隐藏属性集且包含文件扩展名
.txt
的文件的目录。因此第一个解决方案更好。

要了解所使用的命令及其工作原理,请打开命令提示符窗口,执行以下命令,并完整、仔细地阅读每个命令显示的帮助页面。

  • dir /?
  • echo /?
  • endlocal /?
  • for /?
  • if /?
  • set /?
  • setlocal /?
© www.soinside.com 2019 - 2024. All rights reserved.