Board logo

标题: [文本处理] [己解决]BAT批处理如何将文件中含有指定字符串的文件名列出来? [打印本页]

作者: DDDYJQ1    时间: 2013-12-25 22:56     标题: [己解决]BAT批处理如何将文件中含有指定字符串的文件名列出来?

本帖最后由 DDDYJQ1 于 2013-12-27 10:55 编辑

如何将同一文件夹下所有文件TXT文件中含有“曾孝琼,陈家江,关山月”的文件名列出来?
只要含有这有三个名字之一的就列出来,先谢了
要求结果姓名对应文件名,象以下这种格式
曾孝琼  飞羽天下.TXT
陈家江 月之暗面.TXT
陈家江 月之金面.TXT
关山月 昆仑传说.TXT
作者: apang    时间: 2013-12-26 15:33

这样可以不?
  1. @echo off
  2. for %%a in (曾孝琼 陈家江 关山月) do (
  3.     for /f "delims=" %%b in ('findstr /im "%%a" *.txt') do echo,%%a %%b
  4. )
  5. pause
复制代码

作者: DAIC    时间: 2013-12-26 15:51

如果一个文件同时包含曾孝琼陈家江,楼主希望如何显示?
作者: DDDYJQ1    时间: 2013-12-26 19:46

如果一个文件同时包含曾孝琼和陈家江,就象以下这样显示
曾孝琼 陈家江 太能光稀世.TXT
曾孝琼  飞羽天下.TXT
陈家江 月之暗面.TXT
陈家江 月之金面.TXT
关山月 昆仑传说.TXT
并将结果保存在KK.TXT
先谢了
作者: apang    时间: 2013-12-26 23:45

本帖最后由 apang 于 2013-12-27 00:07 编辑
  1. @set @n=1 //&dir /b *.txt|cscript -nologo -e:jscript "%~0" &pause&exit /b
  2. var fso = new ActiveXObject("Scripting.FileSystemObject");
  3. var ar = new Array("曾孝琼","陈家江","关山月");
  4. while (!WScript.StdIn.AtEndOfstream) {
  5.     var f = WScript.StdIn.ReadLine();
  6.     var txt = fso.OpentextFile(f).ReadAll();
  7.     var s = "";
  8.     for (i=0; i<=ar.length; i++) {
  9.         if (txt.indexOf(ar[i])>-1) { s += ar[i] + " " };
  10.     };
  11.     if (s != "") { WScript.Echo(s + f) };
  12. };
复制代码

作者: DDDYJQ1    时间: 2013-12-27 00:32

对,谢谢各位,楼上的很好用,如何将结果保存在KK.TXT
谢谢了
作者: DAIC    时间: 2013-12-27 08:48

回复 5# apang


    如果有一个txt文件内容为空,代码会出错。
作者: DDDYJQ1    时间: 2013-12-27 09:15

KK.TXT放在其他文件夹也可以,比如桌面,谢谢了
作者: apang    时间: 2013-12-27 10:14

本帖最后由 apang 于 2013-12-27 10:15 编辑

回复 7# DAIC
  1. @set @n=1 //&dir /b *.txt|cscript -nologo -e:jscript "%~0">KK.log &pause&exit /b
  2. var fso = new ActiveXObject("Scripting.FileSystemObject");
  3. var ar = new Array("曾孝琼","陈家江","关山月");
  4. while (!WScript.StdIn.AtEndOfstream) {
  5.     var f = WScript.StdIn.ReadLine();
  6.     if (fso.GetFile(f).Size >0) {
  7.         var txt = fso.OpenTextFile(f).ReadAll();
  8.         var s = "";
  9.         for (i in ar) {
  10.             if (txt.indexOf(ar[i]) >-1) {s += ar[i] + " "};
  11.         };
  12.         if (s != "") WScript.StdOut.WriteLine(s+f);
  13.     };
  14. }
复制代码

作者: DDDYJQ1    时间: 2013-12-27 10:55

谢谢了,就是这样子,很好用




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2