String 删除包含字符串的系统文件
我正在尝试编写一个批处理文件,该文件将检查给定目录,读取每个文件中的给定字符串“Example”,然后删除包含该字符串的所有文件。这些文件也是系统文件,所以我不知道确切的扩展名是什么,或者这是否重要(也许你可以省略一个文件类型过滤器,让它读取所有文件?)。一些文件也将被锁定,无法读取,因此如果出现这种情况,它需要处理拒绝访问错误,但不确定批处理文件如何处理 更新 我最终使用的是: 对于/f“eol=:delims=“%f in('findstr/m monkey*.txt')执行删除“%f” 可在此处找到:String 删除包含字符串的系统文件,string,batch-file,readfile,delete-file,String,Batch File,Readfile,Delete File,我正在尝试编写一个批处理文件,该文件将检查给定目录,读取每个文件中的给定字符串“Example”,然后删除包含该字符串的所有文件。这些文件也是系统文件,所以我不知道确切的扩展名是什么,或者这是否重要(也许你可以省略一个文件类型过滤器,让它读取所有文件?)。一些文件也将被锁定,无法读取,因此如果出现这种情况,它需要处理拒绝访问错误,但不确定批处理文件如何处理 更新 我最终使用的是: 对于/f“eol=:delims=“%f in('findstr/m monkey*.txt')执行删除“%f” 可
我在发布这篇文章后不久就找到了它。试试这样的方法:
@echo off
cd "C:\some\where"
for /f %%f in ('dir /b /a:-d *') do (
findstr "Example" "%%~ff" && (
attrib -r -s -h "%%~ff"
del /q "%%~ff"
)
)
您的文件都是文本文件还是二进制文件?据我所知,文本文件似乎部分模糊,因此并非所有文本都是纯文本。我必须在您的命令之前添加一个“cd”,以使active directory与命令中的目录相匹配,否则它似乎会在指定目录中找到文件,然后在我的桌面(我的active directory?)上查找它们。当我第一次使用CD调用时,我会在输出中得到结果,其中它标识了包含“示例”的文件,但该文件不会被删除。我在末尾收到一条消息,指示“访问被拒绝”。我想知道调用delete命令时流是否仍然打开?可能是文件仍然由进程打开(您可以使用Sysinternals的实用程序进行检查),或者您没有足够的权限删除文件。您可以使用来验证/调整文件的权限和所有权。