【问题标题】:How to print path to a txt file in command line?如何在命令行中打印txt文件的路径?
【发布时间】:2021-06-16 01:09:22
【问题描述】:

我有一个包含两级子文件夹的文件夹。 (主文件夹 > 子文件夹级别 1 > 子文件夹级别 2 > 文件)我想找到包含特定文件类型的文件夹。 (子文件夹级别 2 的组织方式使每个文件夹仅包含特定的文件类型,即 .txt、.pdf、.png。)并将该子文件夹的路径打印到 txt 文件。

我已经完成了

cd main folder
dir *.pdf* /s > path.txt

但是,该命令会打印出来:

子文件夹路径

1.pdf

2.pdf

3.pdf

子文件夹路径

1a.pdf

2a.pdf

3a.pdf

等等

我只想打印子文件夹的路径。

【问题讨论】:

    标签: windows cmd


    【解决方案1】:

    forfiles 呢?

    forfiles /S /M *.pdf /C "cmd /c echo @path"
    

    【讨论】:

      【解决方案2】:

      以下命令行返回根main folder 的所有包含.pdf 文件的子目录:

      for /D /R "main folder" %J in ("*") do @if exist "%~J\*.pdf" echo(%~J
      

      【讨论】:

        【解决方案3】:

        由于您只处理两级目录,因此没有任何理由使用递归函数,它会向下钻取所有级别。

        (for /d %g in (*)do @for /d %h in ("%g\*")do @if exist "%g\*.pdf" echo %h)>"path.txt"
        

        如果您想要完整路径,只需将%h 更改为%~fh

        【讨论】:

          【解决方案4】:

          我的第一次尝试是尝试

          dir /S "*.pdf" |find "\" >path.txt

          但这给了

           Directory of C:\level1
           Directory of C:\level1\Folder2
           Direct....
          

          我猜你不想要那些“目录”

          我的第二次尝试是这样

          For /R %F in (.) do @if exist "%F\*.pdf" echo %~fF >>path-pdfs.txt

          注意:- 在 .cmd 文件中 % 需要加倍

          @echo off
          cd "main folder"
          REM First clear any old entries
          echo( >path-pdfs.txt
          For /R %%F in (.) do @if exist "%%F\*.pdf" echo %%~fF >>path-pdfs.txt
          

          应该返回

          C:\level1
          C:\level1\Folder3
          C:\Lev...etc.
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2010-11-06
            • 2010-11-06
            • 2021-12-05
            • 2022-11-28
            • 1970-01-01
            • 2014-10-25
            • 2014-05-15
            • 1970-01-01
            相关资源
            最近更新 更多