. : : ClassiClub ForuM : : .

会员中心 论坛帮助 日历事件 标记论坛已读
返回   精品技术论坛 » 技术论坛 » 『软件使用』

『软件使用』: 电脑软件推荐, 电脑软件使用, 经验分享



发表新主题 关闭主题
 
主题工具
hitme
 
hitme 的头像
支柱会员
 
资 料:
注册日期: Oct 2001
帖子: 6,489 声望值: 2
精华: 38,解答: 6
#1 旧 2005-04-19, 13:07:44 默认 【命令行专题】命令行下的文件操作与文本处理
hitme 当前离线  

cmd凑热闹来了,试排下,设
http://bbs.et8.net/bbs/showthread.php?t=651683
2楼文本为url.txt

url_sort.cmd

@echo off
del 完成.txt tmp.txt sort.txt 2>nul

setlocal ENABLEDELAYEDEXPANSION

for /f "tokens=1* delims=:" %%i in (url.txt) do if "%%i"=="http" (echo %%i%%j;!n! >>tmp.txt) else set n=%%i
endlocal

sort tmp.txt>sort.txt
for /f "tokens=1,* delims=;" %%i in (sort.txt) do @(echo %%i >>完成.txt && echo %%j >>完成.txt && echo. >>完成.txt)
上传的附件
文件类型: rar url_sort.rar (1.1 KB, 89 次查看)

此帖于 2005-04-30 12:23:07 被 hitme 编辑. .
lyh728
 
lyh728 的头像
『软件使用』版主
 
资 料:
注册日期: Jan 2002
帖子: 4,283 声望值: 3
精华: 15,解答: 4
#2 旧 2005-04-19, 14:02:43 默认
lyh728 当前离线  

引用:
作者: hitme
cmd凑热闹来了,试排下,设2楼文本为url.txt

url_sort.cmd

@echo off
del 完成.txt tmp.txt sort.txt 2>nul

setlocal ENABLEDELAYEDEXPANSION

for /f "tokens=1* delims=:" %%i in (url.txt) do if "%%i"=="http" (echo %%i%%j;!n! >>tmp.txt) else set n=%%i

endlocal

sort tmp.txt>sort.txt

for /f "tokens=1,* delims=;" %%i in (sort.txt) do @(echo %%i >>完成.txt && echo %%j >>完成.txt)
强人,你单独开个帖子讲一讲这个问题吧

最后的for 循环里面多加一个echo输出空行才是最后结果。

还有说说在文件编辑器中怎么做?

此帖于 2005-04-19 14:11:58 被 lyh728 编辑. .
hitme
 
hitme 的头像
支柱会员
 
资 料:
注册日期: Oct 2001
帖子: 6,489 声望值: 2
精华: 38,解答: 6
#3 旧 2005-04-19, 14:13:46 默认
hitme 当前离线  

cmd中一些符号的说明:

&

最简单的组合命令,作用是连接n个命令,按顺序执行,不管是否有执行失败。
a & b
#依次执行a,b

&&

组合命令,与&命令不同之处在于,判断是否有执行失败,如失败将不继续执行剩下的命令。
a && b
#a成功,b执行

||

作用与&&相反
a || b
#a失败,b执行
连着用a && b || c,表示a成功,则执行b,b失败,则执行c


>、>>

输出重定向命令,将命令的输出写入到一个文件中。
区别:>覆盖写入,>>尾部追加写入
echo a>a.txt
find /v "" *.txt >list.txt

|

管道命令,前一命令的输出作为后一命令的输入,常用于文本过滤操作
dir | find "hitme.exe"
hitme
 
hitme 的头像
支柱会员
 
资 料:
注册日期: Oct 2001
帖子: 6,489 声望值: 2
精华: 38,解答: 6
#4 旧 2005-04-19, 14:15:23 默认
hitme 当前离线  

引用:
作者: lyh728
还有说说在文件编辑器中怎么做
晕,你不知道?

引用:
作者: lyh728
emeditor 有一个插件可以对行进行排序,但是首先必须整理成可以排序的形式
我也不知道

引用:
作者: lyh728
你单独开个帖子讲一讲这个问题吧
这个例子比较特别,需求为等长的数字排序,sort命令就能很好完成,碰到的麻烦是中文标题行的干扰.
解决思路是两行并一行(结合),sort(xx),好合好散(天亮了)

此帖于 2005-04-19 14:33:48 被 hitme 编辑. .
hitme
 
hitme 的头像
支柱会员
 
资 料:
注册日期: Oct 2001
帖子: 6,489 声望值: 2
精华: 38,解答: 6
#5 旧 2005-04-19, 15:00:26 默认
hitme 当前离线  

cmd下的一些文件处理:
==============================================
1.保持文件夹结构,copy特定大小,时间,类型文件
2.保持文件夹结构,copy文件名,内容空
3.按文件数量移动文件到目标目录
4.copy某层(3..4..5)子目录下的文件到目标路径
5.删除文件夹中非某扩展名(如txt)的文件
6.copy不同文件夹下的同名文件到目标文件夹
7.同一文件copy到所有子文件夹中
8.处理所有扩展名为e??且不是exe的文件
9.每个文件生成一个同名文件夹,然后把各个文件拷贝到同名文件夹中
10.删除空文件夹
==============================================

1.保持文件夹结构,copy特定大小,时间,类型文件

#特定类型

xcopy /s/y *.exe 目标路径

*很多单独的命令(dir;xcopy等)自身就富有变化,善用之

#特定大小
(例如小于50000字节,具体运算符号:EQU - 等于 NEQ - 不等LSS - 小于 LEQ - NEQ - 不等于)

for /r %i in (*.*) do if %~zi lss 50000 xcopy /s "%i" 目标路径"%~pi"


*出动循环武器for命令,可与众多命令搭配使用,例如if,findstr,echo等等
*这里用它枚举子文件夹下的文件,%~zi扩冲为文件大小,交给if命令进行比较运算,成功后xcopy至目标路径并copy文件夹
*for命令执行顺序)输入,for枚举,do...爱干吗干嘛

#特定时间
例:拷贝特定时间(2005-04-19)的文件,以下内容保存为.bat文件执行
代码:
setlocal ENABLEDELAYEDEXPANSION
for /r %%i in (*.*) do set dd=%%~ti && if "!dd:~0,8!"=="05-04-19" xcopy /s "%%i" 目标路径"%%~pi"
endlocal
*同上一条,还是for,if,xcopy,由于不能直接对for变量%~ti进行%~ti:~0,8这样的扩展,变通一下,set给普通变量,再做扩展
*%var~:0,8%扩展的说明:两个数字表示偏移量和长度,具体参看set /?
*关于ENABLEDELAYEDEXPANSION延迟环境变量扩充,参看set /?,有实例说明


-----------------------------------------------
2.保持文件夹结构,copy文件名,内容空

xcopy /t/s *.* 目标路径
for /r %i in (*.*) do echoc >目标路径"%~pnxi"

*xcopy /t/s建立镜象文件夹,for /r in (*.*)枚举子文件夹中的文件,利用echoc的bug,写入0字节文件

-----------------------------------------------
3.按文件数量移动文件到目标文件夹,以下内容保存为.bat文件执行

代码:
setlocal ENABLEDELAYEDEXPANSION
set /a n=0
:loop
set /a n=n+1
md 文件夹%n%
for %%i in (*.*) do move "%%i" 文件夹%n% & dir 文件夹%n% | findstr /c:"100 个文件" && goto loop
endlocal
*需求将源文件夹中的文件,每100个移动至文件夹1..2..3
*for (*.*) do move一个 && 查找是否有100个了 && 找到跳出去,移动下100个


-----------------------------------------------
4.copy某层(3..4..5)子目录下的文件到目标路径
#复制第3层文件夹下的文件到目标路径

dir /s/b/a >d.txt
for /f "tokens=1-4 delims=\" %i in (d.txt) do echo n | xcopy /e "%i\%j\%k\%l" 目标路径

*dir 列出没有标题信息或摘要的子文件夹,并重定向到d.txt
*for /f ..(d.txt),分析d.txt,交xcopy复制
*也可以直接用for /f ..('dir /s/b/a') do dir输出会被抓进内存,当作文件分析。分两行写主要是考虑到文件夹复杂时的脚本效率

-----------------------------------------------
5.删除文件夹中非某扩展名(如txt)的文件

for /f "delims=/" %i in ('dir /b/s *.*') do dir /b/s *.txt | find "%i" || del "%i"

*抓dir *.*的输出,在dir *.txt输出中查找,没找到则不是txt文件,删除之
*可扩充为非txt+jpg+gif的文件,不会眼花了


-----------------------------------------------
6.copy不同文件夹下的同名文件到目标文件夹

文件夹1下面有一个文件123.jpg
文件夹2下面也有一个文件123.jpg,文件名相同,内容不同
文件夹3下面也有一个文件123.jpg,文件名相同,内容不同
……
我想搜索所有的文件123.jpg,copy到一个目标文件夹下,但是我用搜索->复制,出现后者覆盖前者的问题,只能保留一个文件123.jpg,有没有

办法把这些同名文件拷贝到相同文件夹下?或者是说如何自动重命名搜索到的文件?


dir /s/b 123.jpg | find /n "123.jpg" >temp.txt
for /f "tokens=1,2 delims=[]" %i in (temp.txt) do copy "%j" d:\123-"%i".jpg

*枚举所有123.jpg文件的完整路径,并加上行号重定向到temp.txt
*for /f () do copy 同时重命名为123_行号.jpg,行号不会重复,利用一下
-----------------------------------------------
7.同一文件copy到所有子文件夹中

for /r %a in (.) do xcopy /y filename "%~pa"

*for /r ..(.) do 只枚举文件夹

-----------------------------------------------
8.处理所有扩展名为e??且不是exe的文件

for %i in (*.e??) do if /i "%~xi" neq ".exe" echo %i

-----------------------------------------------
9.每个文件生成一个同名文件夹,然后把各个文件拷贝到同名文件夹中

for %i in (*.*) do md "%~ni" && copy %i "%~ni"

------------------------------------------------
10.删除空文件夹

for /l %a in (1,1,9) do for /r %i in (.) do rd %~si

此帖于 2005-04-21 10:13:12 被 hitme 编辑. .
lyh728
 
lyh728 的头像
『软件使用』版主
 
资 料:
注册日期: Jan 2002
帖子: 4,283 声望值: 3
精华: 15,解答: 4
#6 旧 2005-04-19, 16:15:30 默认
lyh728 当前离线  

引用:
作者: hitme
晕,你不知道?



我也不知道


这个例子比较特别,需求为等长的数字排序,sort命令就能很好完成,碰到的麻烦是中文标题行的干扰.
解决思路是两行并一行(结合),sort(xx),好合好散(天亮了)
带regex 的功能文本编辑器也是用同样的思路解决的
1 先合并,
2 把http放到前面,
3 排序
4 倒转http到后面
5 分割
imlogo
 
imlogo 的头像
热心会员
 
资 料:
注册日期: Dec 2001
帖子: 8,672 声望值: 4
精华: 0,解答: 23
#7 旧 2005-04-19, 17:06:47 默认
imlogo 当前离线  

看得头都大了:qqb012:

还是用高级工具吧……

我最喜欢把文本导入SQL Server进行排序、删除重复项了

哈哈:qqb007:


我翻开历史一查,这历史没有年代,歪歪斜斜的每叶上都写着“仁义道德”几个字。我横竖睡不着,仔细看了半夜,才从字缝里看出字来,满本都写着两个字是“吃人”!
lyh728
 
lyh728 的头像
『软件使用』版主
 
资 料:
注册日期: Jan 2002
帖子: 4,283 声望值: 3
精华: 15,解答: 4
#8 旧 2005-04-19, 18:11:20 默认
lyh728 当前离线  

引用:
作者: imlogo
看得头都大了:qqb012:

还是用高级工具吧……

我最喜欢把文本导入SQL Server进行排序、删除重复项了

哈哈:qqb007:
阿?俺的机器没有装sql server阿
su99
 
su99 的头像
支柱会员
 
资 料:
注册日期: Mar 2000
帖子: 4,702 声望值: 2
精华: 14,解答: 7
#9 旧 2005-04-20, 01:53:14 默认
su99 当前离线  

支持一把。很多时候用命令行有四两拔千斤的感觉。
su99
 
su99 的头像
支柱会员
 
资 料:
注册日期: Mar 2000
帖子: 4,702 声望值: 2
精华: 14,解答: 7
#10 旧 2005-04-20, 01:54:23 默认
su99 当前离线  

这样排序工程太浩大了吧

引用:
作者: imlogo
看得头都大了:qqb012:

还是用高级工具吧……

我最喜欢把文本导入SQL Server进行排序、删除重复项了

哈哈:qqb007:
gaf
 
gaf 的头像
超级会员
 
资 料:
注册日期: Jan 2002
帖子: 1,810 声望值: 3
精华: 1,解答: 2
#11 旧 2005-04-20, 01:55:57 默认
gaf 当前离线  

支持。现在自动检测邮件服务器是否正常就是用批处理。呵呵,,简单,实用。
dodowolf
 
dodowolf 的头像
热心会员
 
资 料:
注册日期: Sep 2002
帖子: 3,043 声望值: 5
精华: 0,解答: 9
#12 旧 2005-04-20, 02:15:30 默认
dodowolf 当前离线  

hitme 真的 你写书去吧
"All References for Windows Command"

PS
我觉得写一个JAVA程序就可以实现了.
sxxt
 
sxxt 的头像
热心会员
 
资 料:
注册日期: Mar 2001
帖子: 2,882 声望值: 4
精华: 0,解答: 5
#13 旧 2005-04-20, 08:27:10 默认
sxxt 当前离线  

强人啊强人。。
jiuk2k
 
jiuk2k 的头像
待认证激活
 
资 料:
注册日期: Mar 2002
帖子: 3,177 声望值: 2
精华: 5
#14 旧 2005-04-20, 08:48:59 默认
jiuk2k 当前离线  

这个贴超强,佩服佩服!:qqb003:


NearbyFeed基于地点的社交网络iPhone和Android应用程序,欢迎到App Store和Android Market下载使用nearbyfeed.com
hitme
 
hitme 的头像
支柱会员
 
资 料:
注册日期: Oct 2001
帖子: 6,489 声望值: 2
精华: 38,解答: 6
#15 旧 2005-04-20, 13:43:12 默认
hitme 当前离线  

cmd下的一些文本处理

开头跑个题,插播个广告,隆重推出,铛铛铛铛~~~,excel!excel!excel!
m$那个电子表格软件?提它做什么?这题太跑了吧?
做行文本处理!排序,过滤,中间插入,翻个身,倒个个,奇偶行交换,抽取1,4,9..行,合并,交叉合并,首行填充奇数行,等等72变
相比xnix shell,各种文本编辑软件,决不逊色,入门还更容易,帮助文件更为详尽,实为居家旅行,杀人越货的强手货,没有概念的赶紧试用。
使用时需要的仅仅是个思路。思路..思路很重要!

言归正传,还是cmd,用它做文本处理,只能算是勉为其难,凑合着用吧,常做深呼吸,小心给"憋"着了

====================================================================
1.列表多个文本文件文件名+文件内容
2.构造001.txt 002.txt 999.txt 文本内容分别是text001 text002
3.构造http://..001|002|003../01|02|03.htm序列
4.将一堆文本形式的网址单独转换成IE收藏夹的快捷方式
5.将IE收藏夹导出为CSV格式文档
6.有txt文件all.txt 和 a.txt 里面存放的是文件列表,求出a.txt里面没有,而all.txt里有的文件列表
7.文本文件中的单词实现全文自动统计并排序
8.统计一个文本文件中某一单词出现的次数?
9.GB和Maxthon群组转换
10.合并2个字幕文本文件
11.snap&compare 多个html的固定内容
=====================================================================

1.列表多个文本文件文件名+文件内容

find /v "" *.txt >list.txt

*继续观察自带命令的有价值输出
------------------------------------------------------------
2.构造001.txt 002.txt 999.txt 文本内容分别是text001 text002

for /l %i in (1,1,9) do @echo text00%i >00%i.txt
for /l %i in (10,1,99) do @echo text0%i >0%i.txt
for /l %i in (100,1,999) do @echo text%i >%i.txt

*分段补零
-----------------------------------------------------------------
3.构造http://..001|002|003../01|02|03.htm文件,以下内容保存为.bat文件执行
代码:
setlocal ENABLEDELAYEDEXPANSION
for /l %%i in (1001,1,1162) do for /l %%j in (101,1,112) do @(set s=%%i && set t=%%j && echo ^<td^>^<a href="http://www.sergeaura.net/TGP/!s:~1,3!/images/!t:~1,2!.jpg"^>!s:~1,3!!t:~1,2!.jpg^</a^>^</td^> >>file.htm)
endlocal
*嵌套for,两组变量
*00x,0x序号构造,加减高位 ccfer su99原创
------------------------------------------------------------
4.将一堆文本形式的网址单独转换成IE收藏夹的快捷方式

for /f "tokens=1,2,3 delims=:/" %i in ('findstr /n "." 文本.txt') do echo [InternetShortcut] >>%k_%i.url && echo url=http://%k >>%k_%i.url

*没什么特别的

------------------------------------------------------------
5.将IE收藏夹导出为CSV格式文档,以下内容保存为.bat文件执行
代码:
for /f "tokens=1,3,4 delims=:" %%i in ('findstr /s "http" *.url') do if %%k neq 0 (echo %%i,http:%%j:%%k >>list.csv) else echo %%i,http:%%j >>list.csv
*findstr /s *.*得到文件相对路径,利用之

------------------------------------------------------------
6.有txt文件all.txt 和 a.txt 里面存放的是文件列表,求出a.txt里面没有,而all.txt里有的文件列表
#有txt文件 all.txt 和 a.txt 里面存放的是文件列表,a.txt 是 all.txt 的子集,求出a.txt里面没有,而all.txt里有的文件列表

for /f "delims=" %i in (all.txt) do @findstr /x /c:"%i" a.txt >nul || @findstr /x /c:"%i " b.txt >nul || @echo %i>>b.txt

*连续的||..||应用

------------------------------------------------------------
7.文本文件中的单词实现全文自动统计并排序

一个文本文件,每行有一个单词或字符串(有重复的),几千行。用word或UE只能做到按字典顺序重新排列、或选中某词统计其个数。

有没有一种方法能自动统计每一不同单词的出现次数,并输出结果列表(加按出现次数排序就更好了)。

源文件内容:
abc
adfg
aew
dew
abc
abc
aew
adfg
abc
dew
adfg
ewq
abc
自动统计并排序后输出列表(假设):

abc    5
adfg    3
aew    2
dew    2
ewq    1

设输入文本为tmp

for /f "delims=" %i in (tmp) do @echo %i >> %i.txt
@findstr /n "." *.txt >tmp1
for /f "tokens=1-3 delims=:" %i in (tmp1) do @echo %k %j>%i
copy *.txt result.txt

*分类汇总,excel,awk。。不合用的时候,cmd顶住
*行号=数量
------------------------------------------------------------
8.统计一个文本文件中某一单词出现的次数?,以下内容保存为.bat文件执行

find_word.bat
代码:
@echo off
setlocal ENABLEDELAYEDEXPANSION
set /p file=请输入要查询的文件名:
set /p name=请输入要查询的单词:
set /a n=0

:loop
set /a n=n+1
for /f "tokens=%n% delims=,;.()[]{}!? " %%i in (%file%) do if /i %%i equ %name% echo %name% >>%name%.txt 
if %n% neq 255 (goto loop) else goto end

:end
for /f "delims=:" %%i in ('findstr /n "." %name%.txt') do set x=%%i
echo %name%出现的次数为:%x%
del %name%.txt
endlocal
*for进行单词匹配,慢死人的那种,纯属yy
------------------------------------------------------------
9.GB和Maxthon群组转换,以下内容保存为.bat文件执行

GB和Maxthon群组转.bat
代码:
@echo off
:common

setlocal ENABLEDELAYEDEXPANSION
findstr "CaptorGroup" *.cgp  && goto max_gb ||  goto gb_max

:max_gb

rd /s/q gb_group
md gb_group
for %%i in (*.cgp) do echo [Group]>>gb_group\\%%i
for %%a in (*.cgp) do for /f "tokens=1-4 delims==:" %%i in ('findstr /n "=" "%%a                " ') do set /a n=%%i-2 && echo name!n!=%%j>>gb_group\%%a && echo ^url!n!=%%k:%%l>>gb_group\%%a
goto end

:gb_max

rd /s/q max_group
md max_group
for %%a in (*.cgp) do for /f "tokens=2 delims==" %%i in ('findstr "." "%%a               " ') do echo %%i>>max_group\%%~na.txt
for %%a in (max_group\*.txt) do echo [CaptorGroup]>>max_group\%%~na.cgp
for %%a in (max_group\*.txt) do for /f "tokens=1,2 delims=: " %%i in ('findstr "." "%%a               " ') do if "%%i" neq "http" (set n=%%i) else (if "%%i" == "http" echo !n!=http:%%j>>max_group\%%~na.cgp)
del /q max_group\*.txt
goto end
endlocal
:end

cls
echo 转换完成,请查看子目录
pause 
exit
*两行并一行,一行拆两行
------------------------------------------------------------
10.合并2个字幕文本文件
合并2个字幕文本文件

原始文件1如下
代码:
1
00:00:17,920 --> 00:00:18,625
Charlie?

2
00:00:19,858 --> 00:00:20,606
Charlie?

3
00:00:21,635 --> 00:00:23,140
和我一块儿去散步怎样?

4
00:00:23,739 --> 00:00:24,456


5
00:00:24,972 --> 00:00:27,317
不,不去,Locke,今天我哪儿都不想去

原始文件2如下
代码:
1
00:00:17,820 --> 00:00:18,525
Charlie?

2
00:00:19,758 --> 00:00:20,506
Charlie?

3
00:00:21,535 --> 00:00:23,040
How about you and I go for a walk?

4
00:00:23,639 --> 00:00:24,356
No.

5
00:00:24,872 --> 00:00:27,217
No, thanks, Locke. I think I'm gonna stay in today.

要求合并后的文件如下
代码:
1
00:00:17,920 --> 00:00:18,625
Charlie?
Charlie?
2
00:00:19,858 --> 00:00:20,606
Charlie?
Charlie?
3
00:00:21,635 --> 00:00:23,140
和我一块儿去散步怎样?
How about you and I go for a walk?
4
00:00:23,739 --> 00:00:24,456

No.
5
00:00:24,972 --> 00:00:27,317
不,不去,Locke,今天我哪儿都不想去
No, thanks, Locke. I think I'm gonna stay in today.

想把中英文字幕合并起来,边看片子还可以边学学英文
其实软件上是可以同时加载2个字幕的,也可以实现要求
可是我现在看片子都是在Xbox上看,XBMC这个播放软件在同一时间只能支持一个srt字幕,所以才会有此要求

=============================================================

设文件名为file1.txt file2.txt,以下内容保存为.bat文件执行
fuck.bat
代码:
del 1.txt 2.txt all.txt 合并后文档.txt
echo 加一行 >2.txt
type file2.txt >>2.txt
copy file1.txt 1.txt
:#源文件准备

findstr /n "." 1.txt 2.txt >tmp.txt
:#合并源文件并添加行号

for /l %%i in (1,1,500) do findstr /r "^1.txt:%%i:" tmp.txt >>all.txt || findstr /r "^2.txt:%%i:" tmp.txt >>all.txt
:#分析,构造目标文件

for /f "tokens=3,* delims=:" %%i in (all.txt) do echo %%i%%j >>合并后文档.txt
:#滤除多余信息
*交叉合并

------------------------------------------------------------
11.snap&compare 多个html的固定内容
有以下内容
http://www.abcd.com/pub/wrok1.html
http://www.abcd.com/pub/wrok2.html
http://www.abcd.com/pub/wrok3.html
.
..
...
http://www.abcd.com/pub/wrok(*).html

每个html,几乎整个html部分都是固定内容,除了我要监测的(文本方式打开)第225行,第38位开始,75位结束这段,它们
有不定时的改变,所有html更新的部分也许不止这一个地方,但我只想监测这一段

有没有软件或方法snap一次镜像,然后下次再snap后作出对上次snap的对比,得出哪个url的html内容监测段作出了改变?

=========================
无错误控制,以下内容保存为.bat文件执行

snap&compare.bat
代码:
@echo off

del 差异.txt 2>nul
copy /y snap.txt snap_old.txt 1>nul
:#清理及悲愤snap

:snap
echo ======%date% %time%====== >snap.txt
:#加入时间戳

set url=http://www.abcd.com/pub/wrok
:#url变量赋值

for /l %%i in (1,1,100) do curl %url%%%i.html | findstr /n "." | findstr /r "^225:" >>tmp.txt && echo %url%%%i >>tmp.txt
:#下载htm并过滤所需行

setlocal ENABLEDELAYEDEXPANSION
for /f "tokens=1* delims=:" %%i in (tmp.txt) do if "%%i"=="http" (echo %%i%%j !n! >>snap.txt) else set n=%%j
endlocal
:#整型快照

del tmp.txt 
:#删除临时文件


:goto
if not exist snap_old.txt cls && echo ======第一次建立快照文件snap^.txt^,请再次运行snap^&compare^.cmd获取文件差异====== && pause && goto end
:#判断是否存在对比快照,如不存在则不进行差异比较


:compare

findstr /n "." snap.txt >tmp1.txt
findstr /n "." snap_old.txt >tmp2.txt
:#为snap文本加入行号

for /l %%i in (2,1,100) do findstr /r "^%%i:" tmp1.txt tmp2.txt >>tmp3.txt
:#以行号为序合并tmp文件

findstr /r "1:" tmp*.txt >>差异.txt
:#添加时间戳

setlocal ENABLEDELAYEDEXPANSION
for /f "tokens=1* delims=:" %%i in (tmp3.txt) do if %%i==tmp1.txt (set n=%%j) else (if %%j neq !n! echo %%j>>差异.txt)
endlocal
:#比较文本,计算差异行及行号

del tmp*.txt
:#清理临时文件

cls && echo ===========完成差异比较,请查看"差异.txt"=========== && pause

end:
*两行并一行,相似文本比较

此帖于 2005-04-26 12:05:56 被 hitme 编辑. .
发表新主题 关闭主题

主题工具

论坛规则  发帖规则
不可以发表主题
不可以回复帖子
不可以上传附件
不可以编辑自己的帖子
论坛启用 vB 代码
版面启用 表情符号
版面启用 [IMG] 代码
版面禁用 HTML 代码


所有时间均为北京时间, 现在的时间是 03:09:42.

本论坛带宽由迅通网络提供
SSL证书由TrustAsia提供

Copyright © 2000 - 2019 ClassiClub Forum All Rights Reserved.
粤ICP备09123456号