我有一个在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中的文字发生了变化! (将>更改为>>会给出相同文本的大量重复。)
这让我的大脑受伤了。请给我一些指示。感谢。
答案 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)。