List 用于列出文件夹但排除特定文件夹的批处理脚本

List 用于列出文件夹但排除特定文件夹的批处理脚本,list,batch-file,directory,dir,List,Batch File,Directory,Dir,我希望此脚本列出文件夹名称中包含“已删除”的所有文件夹,但如果它们位于名为“完成”的文件夹中,则不列出 例如:如果文件夹位于C:\temp中,并且如果文件夹位于C:\temp\random\u folder\u name中,请列出该文件夹,但如果文件夹位于C:\temp\done中,则不列出该文件夹 dir /s "C:\temp" | findstr "\deleted" 简短的故事,排除所有名为“完成”的文件夹及其内容 dir /s "C:\temp" | findstr "\delete

我希望此脚本列出文件夹名称中包含“已删除”的所有文件夹,但如果它们位于名为“完成”的文件夹中,则不列出

例如:如果文件夹位于
C:\temp
中,并且如果文件夹位于
C:\temp\random\u folder\u name
中,请列出该文件夹,但如果文件夹位于
C:\temp\done
中,则不列出该文件夹

dir /s "C:\temp" | findstr "\deleted"
简短的故事,排除所有名为“完成”的文件夹及其内容

dir /s "C:\temp" | findstr "\deleted"|findstr /i /v "\temp\done\"
应该符合要求

  • 或者,如果您想在路径上省略任何已作为目录“完成”的名称,请删除
    \temp
    部分
    • 你就快到了

      Findstr/v返回不包含字符串的所有行

      dir/ad将仅显示目录(Atrribut=Directory)

      在许多情况下:

      dir /b /s /aa <path>
      
      dir/b/s/aa
      

      我会成功的/b用于不太详细的输出,/s用于递归(子目录),而/aa仅用于准备归档的文件。这通常是正常创建的文件的情况-默认为打开

      啊-但这也会排除名为
      done*
      的目录和文件,而不仅仅是
      'done'
      的/ad消除了文件名-我的错误。尽管如此,如果在\done`之后没有\done',这也将匹配所有\done。OTOH,使用
      \done`将仅豁免
      c:\were\all\done\here等
      目录,但不会消除以
      \done
      结尾的目录,如
      c:\were\not\all\done
      。为此,您必须添加一个额外的
      |findstr/i/e/v“\done”
      ,以排除文件夹名(仅使用文件名)dir/a-d。(请参阅dir/?)如果“done”文件夹位于该特定路径中,则可以完美地完成工作。我希望它排除任何名为“done”的文件夹,无论它位于何处,在本例中是C:\Temp。对不起,如果我不清楚这一点。
      dir /b /s /aa <path>