Batch file Bat文件目录列表,删除文本

Batch file Bat文件目录列表,删除文本,batch-file,Batch File,我有一个简单的bat文件,只列出目录文件 if exist "output.txt" del "output.txt" dir /a /b /-p /O:N >>output.txt 创建文本文件时,它还会在文本文件中添加bat文件和output.txt条目。我想删除这两个条目,以使最终列表更清晰 感谢并希望我正确解释了它假设批处理文件名为list.bat,在findstr的帮助下,您可以从dir输出中排除这两个文件 将第二行替换为 dir /a /b /-p /O:N |fin

我有一个简单的bat文件,只列出目录文件

if exist "output.txt" del "output.txt" 
dir /a /b /-p /O:N >>output.txt
创建文本文件时,它还会在文本文件中添加bat文件和output.txt条目。我想删除这两个条目,以使最终列表更清晰


感谢并希望我正确解释了它

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

将第二行替换为

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

顺便说一句,如果存在。。。行是无用的,因为在开始列出文件之前,dir命令重定向会重新创建文件output.txt。

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

将第二行替换为

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

顺便说一句,如果存在。。。行是无用的,因为在开始列出文件之前,dir命令重定向会重新创建文件output.txt。

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

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

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

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

@dir /a /b /-p /o:n|findstr /vi /c:"output.txt" /c:"%~nx0" >output.txt

与Seki的答案相比,这里有一个小小的改进:

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

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

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

@dir /a /b /-p /o:n|findstr /vi /c:"output.txt" /c:"%~nx0" >output.txt

以下版本不需要FINDSTR,因此速度更快:

@echo off
(for %%f in (*.*) do if "%%f" neq "%~NX0" if "%%f" neq "output.txt" echo %%f) > output.txt

以下版本不需要FINDSTR,因此速度更快:

@echo off
(for %%f in (*.*) do if "%%f" neq "%~NX0" if "%%f" neq "output.txt" echo %%f) > output.txt

一个查找器,许多匹配字符串我从未尝试过。很好的解决方案+1一个查找器,许多匹配字符串我从未尝试过。很好的解决方案+Seki写道:如果存在。。。行是无用的,因为在开始列出文件之前,dir命令重定向会重新创建文件output.txt。不正确;>>output.txt重定向附加输出,因此在本例中,如果存在。。。是必需的。@Aacini:进行测试:如果存在,则保留。。。del并删除findstr/vi output.txt部分:您将看到始终列出output.txt。那是我试着用Win7的时候。@Seki:对不起。我说的是>>output.txt将新信息附加到output.txt的旧内容中,因此在本例中if存在。。。德尔。。。是必需的;通过使用>output.txt覆盖重定向而不是dbenham建议的追加,可以避免此问题。无论如何,output.txt名称必须从列表中删除。。。行是无用的,因为在开始列出文件之前,dir命令重定向会重新创建文件output.txt。不正确;>>output.txt重定向附加输出,因此在本例中,如果存在。。。是必需的。@Aacini:进行测试:如果存在,则保留。。。del并删除findstr/vi output.txt部分:您将看到始终列出output.txt。那是我试着用Win7的时候。@Seki:对不起。我说的是>>output.txt将新信息附加到output.txt的旧内容中,因此在本例中if存在。。。德尔。。。是必需的;通过使用>output.txt覆盖重定向而不是dbenham建议的追加,可以避免此问题。在任何情况下,都必须从列表中删除output.txt名称。