我正在尝试仅使用 Windows 批处理脚本来设置 Web 服务器。
我已经想出了以下脚本:
@echo off
@setlocal enabledelayedexpansion
for /l %%a in (1,0,2) do (
type tempfile.txt | nc -w 1 -l -p 80 | findstr mystring
if !ERRORLEVEL! == 0 (
echo found > tempfile.txt
) else (
echo not-found > tempfile.txt
)
)
然而,响应总是落后于一个请求,我的意思是,如果我在浏览器中输入如下内容:
REQUEST: localhost/mystring
我会得到以下回复:
RESPONSE: not-found
只有在下一个请求中,我才会收到上述请求的正确答案。
发生这种情况是因为 netcat 收到请求后,它会立即响应 tempfile.txt 的当前内容,而该内容尚未根据请求进行更新。
有没有办法阻止响应,直到 tempfile.txt 更新或任何其他方法可以实现预期结果?
结帐-e
选项,您可以编写一个执行处理的脚本,然后执行
nc -L -w1 -p 80 -eexec.bat
这将像您想要的那样从 nc 来回传输 stdin 和 stdout 到脚本。
exec.bat 可能类似于(有点伪代码):
findstr mystring
if not errorlevel 1 (echo found) else (echo not-found)
或者可能是一个循环(也有些伪代码):
:top
set /p input=
if input wasn't "" echo %input% >> output.dat && goto top
findstr /C:"mystring" output.dat
if not errorlevel 1 (echo found) else (echo not-found)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)