Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 删除包含字符串的系统文件_String_Batch File_Readfile_Delete File - Fatal编程技术网

String 删除包含字符串的系统文件

String 删除包含字符串的系统文件,string,batch-file,readfile,delete-file,String,Batch File,Readfile,Delete File,我正在尝试编写一个批处理文件,该文件将检查给定目录,读取每个文件中的给定字符串“Example”,然后删除包含该字符串的所有文件。这些文件也是系统文件,所以我不知道确切的扩展名是什么,或者这是否重要(也许你可以省略一个文件类型过滤器,让它读取所有文件?)。一些文件也将被锁定,无法读取,因此如果出现这种情况,它需要处理拒绝访问错误,但不确定批处理文件如何处理 更新 我最终使用的是: 对于/f“eol=:delims=“%f in('findstr/m monkey*.txt')执行删除“%f” 可

我正在尝试编写一个批处理文件,该文件将检查给定目录,读取每个文件中的给定字符串“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的实用程序进行检查),或者您没有足够的权限删除文件。您可以使用来验证/调整文件的权限和所有权。