使用cmd处理文本和文本文件

时间:2012-08-27 14:02:05

标签: cmd

我有一个在win XP上运行的cmd脚本,它输出一个文本文件:

:start
>outputfile.txt (findstr /v "^#" info.txt || echo No text available)
ping 127.0.0.1
goto start

它检查info.txt中的数据,如果它不是以#coundin创建包含相同文本的outputfile.txt开头。 ping只是用作简单的延迟策略。

现在我需要一些类似于从info.txt获取数据的东西(假设它不以#开头)并将其添加到outputfile.txt中已有的数据中。但只有在info.txt中的文字发生了变化! (将>更改为>>会给出相同文本的大量重复。)

这让我的大脑受伤了。请给我一些指示。感谢。

1 个答案:

答案 0 :(得分:0)

@echo off

set DataFile=info.txt
set OutputFile=outputfile.txt
set SavedSize=0

goto start

:filesize
set CurrentSize=%~z1
exit /b

:start
call :filesize %DataFile%
if %SavedSize% neq %CurrentSize% (>%OutputFile% (findstr /v "^#" %DataFile% || echo No text available))
set SavedSize=%CurrentSize%
ping 127.0.0.1 >nul
goto start

我们的想法是保存以前的数据文件大小并等到它将被更改。

这不是一个理想的解决方案(因为我们需要为每个文件更改复制info.txt的所有数据),如果有人在脚本运行时从info.txt删除行,它可能无法正常工作。使用一些哈希算法(例如,MD5)会更好,但不幸的是,标准的CMD工具集不包含任何合适的东西。

如果这些限制对您至关重要,我建议使用一些命令行哈希实用程序(例如this)或某种更强大的脚本语言(Python,Perl,Powershell)。