[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 批处理如何查找txt文本指定列中是否含相同字符串?

本帖最后由 pcl_test 于 2016-7-19 12:17 编辑

查找1.txt是否含有相同字符串
1.txt内容类似于如下格式:
CQABO-SWDL-F-12     150.200.0.12     7     PORTD8801
CQABO-SWDL-F-12     150.200.0.12     6     PORTD8802
CQABO-SWDL-F-12     150.200.0.12     5     PORTD8804
CQABO-SWDL-F-12     150.200.0.12     8     PORTD8805
CQABO-SWDL-F-12     150.200.0.12     13     PORTD8807
如下代码怎么也不行,大家帮忙看是什么问题,谢谢咯
  1. SETLOCAL ENABLEDELAYEDEXPANSION
  2. set a=0
  3. for /f "tokens=4 delims= " %%j in (1.txt) do (
  4. set /a a=!a!+1
  5. echo !a!
  6. echo %%j
  7. pause
  8. for /f "skip=!a! tokens=4 delims= " %%k in (1.txt) do (
  9. echo %%k
  10. if %%j==%%k ehco have two %%j
  11. )
  12. )
  13. ENDLOCAL
复制代码

本帖最后由 pcl_test 于 2015-8-26 14:37 编辑

第三方
  1. ::先下载http://batch-cn.qiniudn.com/tool/gawk.exe
  2. @gawk "{a[$4]++}END{for(i in a)if(a[i]>1)print i,a[i]}" "1.txt">"2.txt"
复制代码
bat+js,保存为bat运行
  1. @if(0)==(0) echo off&cscript -nologo -e:jscript "%~0"<"1.txt">"2.txt"&pause & exit/b&@end
  2. var a = {};
  3. while(!WScript.StdIn.AtEndOfStream) {
  4.     var m = WScript.StdIn.ReadLine().split(/\s+/);
  5.     a.hasOwnProperty(m[3])?(a[m[3]]++):a[m[3]]=1;
  6. }
  7. for (var i in a){if (a[i]>1)WSH.Echo(i+' '+a[i]);}
复制代码

TOP

  1. @echo off
  2. for /f "tokens=4 delims= " %%j in (1.txt) do (
  3. set /a #%%j+=1
  4. )
  5. for /f "tokens=1,2 delims=#=" %%i in ('set #') do echo;%%i    %%j个
  6. pause
复制代码

TOP

回复 3# 回家路上


    set /a #%%j+=1 怎么理解这句?谢谢

TOP

本帖最后由 回家路上 于 2015-8-26 15:25 编辑

回复 4# 黎0130


set /a 你用了肯定知道。
#%%j就是%%j的值的前面加上#,你肯定还是知道
+=你也知道。

所以你其实不知道的只是————第二个for循环的set # 什么意思?
了解一下set 命令估计一切就了然了
set #————将#开头的变量全都显示出来


哦,你上面没用”+=“。set /a a+=1就相当于set /a a=!a!+1

TOP

  1. @echo off&setlocal enabledelayedexpansion
  2. del b.txt>nul 2>nul
  3. del 重复内容.txt>nul 2>nul
  4. For /f "tokens=*" %%i in (1.txt) do (Findstr /x /c:"%%i" b.txt >nul 2>nul&&(echo %%i>>重复内容.txt)||
  5. (Echo %%i>>b.txt))
  6. del b.txt>nul 2>nul
  7. pause
复制代码

TOP

回复 5# 回家路上


    我懂你的意思了,谢谢!

TOP

返回列表