我有一个仅列出目录文件的简单 bat 文件。
if exist "output.txt" del "output.txt"
dir /a /b /-p /O:N >>output.txt
创建文本文件时,它还会在文本文件中添加 bat 文件和 output.txt 条目。我想删除这两个条目以使最终列表干净。
谢谢,希望我解释正确
我有一个仅列出目录文件的简单 bat 文件。
if exist "output.txt" del "output.txt"
dir /a /b /-p /O:N >>output.txt
创建文本文件时,它还会在文本文件中添加 bat 文件和 output.txt 条目。我想删除这两个条目以使最终列表干净。
谢谢,希望我解释正确
这是对 Seki 答案的一个小改进:
1)使用覆盖重定向而不是附加
2) 使用单个 FINDSTR 消除这两个文件
3)%~nx0
用于获取正在运行的批处理文件的名称
@dir /a /b /-p /o:n|findstr /vi /c:"output.txt" /c:"%~nx0" >output.txt
假设批处理文件名为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
下面的版本不需要 FINDSTR,所以速度更快:
@echo off
(for %%f in (*.*) do if "%%f" neq "%~NX0" if "%%f" neq "output.txt" echo %%f) > output.txt