批处理处理文本文件去重复实现代码_DOS/BAT

最近需要将重复的内容去掉,所以就想到了使用bat或vbs实现,没想到网上已经有人写好了,测试也正好学习一下

使用方法:把文本拖到批处理上就行了。。。

@echo off
:: Code by oicu#lsxk.org 2007/11/29

rem chcp 437>nul
:: 看情况使用,utf-8编码的文件不能少了chcp命令,一般无需使用,
:: 但无论是否使用都不支持utf-16的文件。

:: pushd "%~dp1"
:: 如果不用pushd和popd,文件都要用绝对路径不能只用文件名。

if "%~1"=="" goto :EOF
set outputfile=%~dpn1_output%~x1

type nul>"%outputfile%"

echo Waiting...

for /F "tokens=1* delims=:" %%i in ('findstr /n .* "%~1"') do (
  findstr /B /E /C:"%%j" "%outputfile%">nul 2>&1 || echo.%%j>>"%outputfile%"
)

pause
start "" notepad "%outputfile%"
:: popd
exit

【 在 oicu (Oh! I see you!) 的大作中提到: 】
: 去重复倒是行。。缺点就是慢和保留原有的空行了。

以下是vbs实现的代码

以下是这个脚本的源代码,复制后另存为vbs后缀的文件,双击即可运行。文件要放在C盘根下的Text.TXT,请特别注意:文本中一行一条记录,不要有空行。

Const adOpenStatic = 3
Const adLockOptimistic = 3
Const adCmdText = &H0001
Set objConnection = CreateObject("ADODB.Connection")
Set objRecordSet = CreateObject("ADODB.Recordset")

strPathToTextFile = "C:\"
strFile = "Test.txt"

objConnection.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
   "Data Source=" & strPathtoTextFile & ";" & _
     "Extended Properties=""text;HDR=NO;FMT=Delimited"""

objRecordSet.Open "Select DISTINCT * FROM " & strFile, _
  objConnection, adOpenStatic, adLockOptimistic, adCmdText

Do Until objRecordSet.EOF

Set objFSO = CreateObject("Scripting.FileSystemObject")
   set Fp=objFSO.OpenTextFile("C:\test1.txt",8,True,0)
   fp.WriteLine objRecordSet.Fields.Item(0).Value
   fp.close
   set objFSO = nothing
   objRecordSet.MoveNext
Loop

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索文本文件
去重复
bat批处理脚本命令、bat批处理、bat批处理文件、bat批处理教程、bat批处理命令大全,以便于您获取更多的相关知识。

时间: 2024-07-29 08:24:43

批处理处理文本文件去重复实现代码_DOS/BAT的相关文章

批处理之家发现的用批处理实现的系统类应用代码_DOS/BAT

批处理之家发现的用批处理实现的系统类应用代码 比如菜单的排序,就用到不一样的方法 还有输出的方式等...... 大家用了就知道 写的不好.还请大家多多指教. 由于代码过长,请下载附件. 回帖是美德,下了就要顶啊   bat......右键bat LJ....清理LJ文件  ZCB...查看启动项     JC......查看进程 MIM...通密码管理  IP....查看IP配置    sys.....系统信息 dir.....诊断工具  JH....组策略结集    zcb.......注册表

使用批处理禁用(启用)组策略的代码_DOS/BAT

利用批处理禁用(启用)组策略 regsvr32 /s /u gpedit.dll 禁用 regsvr32 /s gpedit.dll 启用 单单使用这命令依然可以禁止使用组策略,但这样导致的后果就是- 这时候运行的组策略基本上只是个空壳了!利用下面的批处理将完美解决此类问题! 将下面这些代码编成BAT批处理文件,这段是禁用组策略的命令 复制代码 代码如下: @echo off regsvr32 /s /u fde.dll regsvr32 /s /u gpedit.dll regsvr32 /s

批处理重命名特殊文件名的代码_DOS/BAT

一b!a!1235@_ s%#8i 三 c.rar h^e12 0~%l%!p!@. s321-的文件.txt %o%%% !O!ffi9~ ce$- Wor8d29 文档.docx 重命名.bat 图1: 要求运行批处理将这三个文件文件名中的数字.汉字.特殊字符全部(含空格)去掉,而重命名为只含字母的文件,但 后缀名不能更改,同时批处理自身名字不能更改,重命名后: basic.rar helps.txt oOfficeWor.docx 重命名.bat 图2: 要求:代码简洁.通用.效率不至于太

批处理判断是否特殊字符的实现代码_DOS/BAT

批处理判断是否为特殊字符 用于判断输入的一个字符是否为"&^>中的符号.注意,匹配字符串中的空格不可省略! 批处理代码: 复制代码 代码如下: @echo offset Input=S set /p Input=Please input a number:set Filter=S%Input%echo off >nul 2 >nul rem replace " with >set Filter=%Filter:"=>% echo %Fil

批处理程序中的“多线程”处理代码_DOS/BAT

如下内容将简单举例,在WINDOWS下使用批处理做多进程并发,以达到"多线程"的效果. 例:需要PING 192.168.0.1到192.168.0.254的所有IP地址,并将是否能PING通的结果输出到log.txt 实现如下: rem 主程序.bat,只需一行代码,调用checkip.bat,经测试,CPU2.6G MEM1G可并发40个左右的进程 复制代码 代码如下: for /l %%i in (1,1,254) do (start /min cmd /c checkip.ba

用DOS批处理实现建立文件夹的代码_DOS/BAT

题目:用DOS批处理实现建立文件夹 要求:1要求建立文件名格式为"YYYY1-MM1-DD1至YYYY2-MM2-DD2"的文件夹      2其中YYYY1-MM1-DD1是今天的日期;YYYY2-MM2-DD2是四天后的日期 解答: 复制代码 代码如下: @echo off  rem 比较运算符:  EQU - 等于  NEQ - 不等于   LSS - 小于   LEQ - 小于或等于   GTR - 大于   GEQ - 大于或等于  rem 取模运算符:  %% DOS的取模

用批处理重命名文本文件名的代码_DOS/BAT

实现代码1@echo off&setlocal enabledelayedexpansion for /f "delims=" %%a in ('dir/b *.txt') do (    set /a n+=1    if not exist "!n!.txt" (ren "%%a" "!n!.txt") else call :loop "%%a" ) pause&exit :loop  

批处理解约瑟夫环应用题代码_DOS/BAT

题目: 有二十九个女生(分别用1-29号来称呼)围成一圈玩报数游戏,规则是这样的:从1开始数数,当数到3的这个人就退出游戏,而她后面的人接着从1数...如此一直到最后剩下一个人,现在知道最初是从13号女生开始的游戏,问最后剩下的会是第几号女生? 要求: 1 用批处理解答 2 代码简洁高效 3 代码通用且不生成临时文件 加分原则: 以思路为重(如思路独特,请简要说明) 完全符合要求的加10分 已有两套解决方案,见3楼more和6楼ieutk版主的代码,但个人认为这两套方案均不完美(见本人的跟贴评述

bat、vbs、js 原生混编(一个bat可以执行vbs,js代码)_DOS/BAT

发现 mshta 会把 file:// 协议指向的文件当作 html 来解析(注:IUnknown 与 happyxxdhaha 提醒此处必需使用绝对路径,否则不会执行),心里顿时有一万只草泥马奔过,原来如此简单的答案就在身边,却错过了四年 基本框架: 复制代码 代码如下: <!-- : bathome @echo off echo I'm Batch! mshta "file://%~f0" pause&exit 使用注释标签囊括批处理部分,条件是批处理部分不能出现注释