找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 26511|回复: 9

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

[复制链接]
发表于 2013-12-25 22:56:29 | 显示全部楼层 |阅读模式
本帖最后由 DDDYJQ1 于 2013-12-27 10:55 编辑

如何将同一文件夹下所有文件TXT文件中含有“曾孝琼,陈家江,关山月”的文件名列出来?
只要含有这有三个名字之一的就列出来,先谢了
要求结果姓名对应文件名,象以下这种格式
曾孝琼  飞羽天下.TXT
陈家江 月之暗面.TXT
陈家江 月之金面.TXT
关山月 昆仑传说.TXT
发表于 2013-12-26 15:33:05 | 显示全部楼层
这样可以不?
  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
复制代码
发表于 2013-12-26 15:51:46 | 显示全部楼层
如果一个文件同时包含曾孝琼陈家江,楼主希望如何显示?
 楼主| 发表于 2013-12-26 19:46:38 | 显示全部楼层
如果一个文件同时包含曾孝琼和陈家江,就象以下这样显示
曾孝琼 陈家江 太能光稀世.TXT
曾孝琼  飞羽天下.TXT
陈家江 月之暗面.TXT
陈家江 月之金面.TXT
关山月 昆仑传说.TXT
并将结果保存在KK.TXT
先谢了
发表于 2013-12-26 23:45:33 | 显示全部楼层
本帖最后由 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. };
复制代码

评分

参与人数 1技术 +1 收起 理由
DDDYJQ1 + 1 很好用

查看全部评分

 楼主| 发表于 2013-12-27 00:32:16 | 显示全部楼层
对,谢谢各位,楼上的很好用,如何将结果保存在KK.TXT
谢谢了
发表于 2013-12-27 08:48:13 | 显示全部楼层
回复 5# apang


    如果有一个txt文件内容为空,代码会出错。
 楼主| 发表于 2013-12-27 09:15:21 | 显示全部楼层
KK.TXT放在其他文件夹也可以,比如桌面,谢谢了
发表于 2013-12-27 10:14:03 | 显示全部楼层
本帖最后由 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. }
复制代码
 楼主| 发表于 2013-12-27 10:55:14 | 显示全部楼层
谢谢了,就是这样子,很好用
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 22:34 , Processed in 0.032981 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表