有个文本,文本格式如下:可以看到以下四行中,有两行的电脑名有重复,且没有排序,现在请大神用bat保留电脑名相同的一行即可,重复行删除(比如第一行里出现了电脑名A,第三行里也出现了电脑名A,则第一行和第三行随意保留一行,删除一行,每行只有电脑名是相同,其它内容可能不同),并按每行首数字大小重新排序输出到b.txt,从小到大,当然行首也会出现中文,
原文:
05线 PT02 2018年03月21日16点02分完成切换 电脑名:HZ-ASSY05-MT02
02线 CW01 2018年03月22日19点17分完成切换 电脑名:HZ-PACK02-CW01
02线 CW01 2018年03月22日19点19分完成切换 电脑名:HZ-PACK02-CW01
05线 MT02 2018年03月23日11点21分完成切换 电脑名:HZ-ASSY05-MT02
处理后:
02线 CW01 2018年03月22日19点17分完成切换 电脑名:HZ-PACK02-CW01
05线 PT02 2018年03月21日16点02分完成切换 电脑名:HZ-ASSY05-MT02
我自己的代码如下,但不知什么原因,5.txt中会重复出现两遍原始文.txt中的所有内容,没实现,求bat大神帮忙实现。
@echo off
setlocal enabledelayedexpansion
set n=0
cd /d C:\Users\GuoChengYu\Desktop\test
cd.>4.txt
cd.>5.txt
cd.>2.txt
for /f "tokens=1,2 delims=:" %%a in (原始文件.txt) do (
set file=%%b
set file=!file: =!
findstr /i !file! 4.txt||echo %%a:%%b>>5.txt
set /a n+=1
)
echo !n!
sort 5.txt>>2.txt
move 2.txt 5.txt
pause
测试时发现,如果相同电脑名的行,一行行尾有空格,一行行尾无空格,结果就不准确。
所以在确保电脑名要统一,包括其中的空格。
追问功能有些BUG,有些行是这样的,如下,直接忽略了,请大神再帮忙看看,此类行是不能忽略的
-0线 T-02 2018年03月22日10点29分完成切换 电脑名:HZ-ABCD-02
-0线 T-03 2018年03月22日10点31分完成切换 电脑名:HZ-ABCD-03