前几天,我试图制作一个批处理文件,当特定文本文件更新/更改时,它会告诉用户文件的竞赛,这是我的代码,到目前为止它由于某种原因不起作用:S
@echo off
SetLocal EnableDelayedExpansion
:Try
ping 127.0.0.1 -n 2 -w 1000 > NUL
ping 127.0.0.1 -n %1 -w 1000 > NUL
cls
set test=
for /F "delims=" %%a in (test.txt) do set test=!test! %%a
if !test!==%VAR% (
goto Try
) else (
echo !test!
set VAR1=!test!
goto Try
)
这就是我正在尝试做的。
等待 2 秒。清除屏幕。将 test.txt 的内容转换为变量。将该变量与另一个名为 %VAR% 的变量进行比较。由于一开始没有变量可以比较,因此它会转到 else 语句并输出一次内容。然后它会将当前内容转换为变量。它会回到开头并再次尝试。如果 test.txt 已更改,它将再次转到 else。如果没有,它将返回尝试等待文件更改。
请帮帮我,这很烦人。
更新!!!
所以今天我把代码弄得乱七八糟,开始尝试其他方法,因为我怀疑这种方法是否有效。所以我想到了“打破常规”。在我的例子中,我有一个批处理文件,它会不时更改这个名为 test.txt 的文本文档。所以我改变了它。这是标签
:Start
cls
set /p inp=
echo %date% %inp% > test.txt
echo 0 >> tmp.yml"
goto Start
而且我也重写了另一批。
@echo off
color 04
:Try
set /p texte=< test.txt
if exist "tmp.yml" goto Changed
goto Try
:Changed
del "tmp.yml"
echo %texte%
goto Try
希望有人觉得这个有用:D
答案1
我建议不要重新发明轮子,而是使用为此目的明确定义和设计的应用程序。
答案2
Tail for Windows 看起来不错,但按照 @dmcgill50 的建议,我尝试了一下,但不起作用(尝试使用 Dropbox、Win8 x64 中的文件)。如果知道一种方法来做到这一点就好了。
也许此页面中的某条建议可以帮助您: