2

我有一个仅列出目录文件的简单 bat 文件。

if exist "output.txt" del "output.txt" 
dir /a /b /-p /O:N >>output.txt

创建文本文件时,它还会在文本文件中添加 bat 文件和 output.txt 条目。我想删除这两个条目以使最终列表干净。

谢谢,希望我解释正确

4

3 回答 3

2

这是对 Seki 答案的一个小改进:

1)使用覆盖重定向而不是附加

2) 使用单个 FINDSTR 消除这两个文件

3)%~nx0用于获取正在运行的批处理文件的名称

@dir /a /b /-p /o:n|findstr /vi /c:"output.txt" /c:"%~nx0" >output.txt
于 2012-06-06T15:40:22.747 回答
1

假设批处理文件名为list.bat,在您的帮助下findstr可以从dir输出中排除这两个文件。

将第二行替换为

dir /a /b /-p /O:N |findstr /vi output.txt|findstr /vi list.bat >>output.txt

顺便说一句,该if exist...行是无用的,因为该文件是在开始列出文件之前output.txt通过命令重定向重新创建的。dir

于 2012-06-06T14:33:26.820 回答
1

下面的版本不需要 FINDSTR,所以速度更快:

@echo off
(for %%f in (*.*) do if "%%f" neq "%~NX0" if "%%f" neq "output.txt" echo %%f) > output.txt
于 2012-06-07T15:55:54.840 回答