我希望删除文件中包含特定单词的一行.(*关键字)



我希望删除包含特定单词的行(在我的例子中是[*KEYWORD])。这些文件的扩展名为"。block"。这些文件位于同一文件夹中的不同子文件夹中。我写了下面的代码:

@setlocal enabledelayedexpansion
@echo off
dir "C:UsersXFIWSMDesktopbatch_filesT30*.blk /s/b > dirlist.txt
for /F %%i in (dirlist.txt) do (
    type %%i
    findstr /v "KEYWORD"
    > %%i.blk
   )
   pause 

根据Ken先生提供的答案,我已经尝试了以上的代码。但是,似乎什么都不起作用。我已经创建了一个名为dirlist.txt的空文件。但是这个文件也不是用路径*来写的。黑色的文件。我还希望在同一位置保存同名的。blk文件。因此,我尝试使用> %%i。黑色……谁能帮帮我,我到底哪里错了?

您不能对不在指定目录中的文件使用type(您的文件位于指定目录的子文件夹中,而不是在目录本身中)。

我的建议是使用dir命令,使用适当的开关来搜索子目录(/s)并生成一个裸列表(没有大小、日期和文件夹/卷名称)(/b),并将其重定向到一个文本文件。然后,您可以使用for /f循环读取该目录清单中的每一行,并进一步处理它。

@setlocal enabledelayedexpansion
@echo off
dir "D:MasterSPRINGBACKDPKT08*.blk /s/b > dirlist.txt
for /F %%i in (dirlist.txt) do (
  :: Process each file here
)

有关从文件中删除特定文本行的信息,请参见如何在批处理中从文件中删除行(或给定行中的文本)?

如果你有一台使用grep的机器(如果使用windows,在sourceforge上检出unxutil),你可以使用这个命令:grep"关键字"-v *。BLK> filewithlinermoved . BLK

最新更新