gpt4 book ai didi

batch-file - 从文本文件中读取字符串并使用批处理文件将其复制到另一个文本文件中

转载 作者:行者123 更新时间:2023-12-02 03:46:55 28 4
gpt4 key购买 nike

我想做的基本上是读取包含 ping 结果的文本文件,检测某个字符串并将其复制到另一个文本文件中。我要复制的字符串是示例中的粗体字符串。

Envoi d'une requˆte 'ping' sur star.c10r.facebook.com [31.13.81.17] avec 32 octets de donn‚esÿ: R‚ponse de 31.13.81.17ÿ: octets=32 temps=77 ms TTL=240

Statistiques Ping pour 31.13.81.17: Paquetsÿ: envoy‚s = 1, re‡us = 1, perdus = 0 (perte 0%), Dur‚e approximative des boucles en millisecondes : Minimum = 77ms, Maximum = 77ms, Moyenne = 77ms

我试图执行这个程序,但结果中没有出现变量“resultat”。

@echo off
setlocal enabledelayedexpansion

set OUTPUT_FILE=result.txt
>nul copy nul %OUTPUT_FILE%

for /f %%i in (testservers.txt) do (
set SERVER_ADDRESS=ADDRESS N/A
for /f "tokens=1,2,3,4" %%a in ('ping -n 1 %%i ^&^& echo SERVER_IS_UP') do (
if %%a==R,ponse set resultat="%%b %%c %%d"
)

echo %%i [!SERVER_ADDRESS::=!] is resultat >>%OUTPUT_FILE%
)

谢谢。

感谢@Matt 的帮助,我可以编辑我的代码:

@echo off
setlocal enabledelayedexpansion

set OUTPUT_FILE=result.txt

for /f %%i in (testservers.txt) do (
if not exist %OUTPUT_FILE% type NUL>%OUTPUT_FILE%
for /f "tokens=2 delims=:" %%a in ('ping -n 1 %%i ^| find "TTL="') do (
if errorlevel 0 set resultat=UP: %%a
)

echo %%i is !resultat! >> %OUTPUT_FILE%
set resultat=DOWN
)

我将“resultat”的默认值设置为 DOWN,因为我注意到它只有在找到“TTL”时才会更改,这意味着服务器已启动。如果未找到,程序将显示“resultat”的默认值,即 DOWN。“octets=32 temps=77 ms TTL=240”部分只会在服务器处于 UP 状态时显示,以显示统计信息。结果是这样的:

www.google.com is UP: octets=32 temps=470 ms TTL=42

www.facebook.com is UP: octets=32 temps=326 ms TTL=241
192.168.1.15 is UP: octets=32 temps<1ms TTL=128
10.21.107.90 is Down

感谢您的帮助。

最佳答案

我在这里看到了一些问题。在说 SERVER_IS_UP 之前,您实际上并没有检查 ping 的返回值以查看它是否有效。您没有正确使用 SERVER_ADDRESS 变量,也没有将结果作为变量调用。

看看这是否解决了问题。

@echo off
setlocal enabledelayedexpansion

set OUTPUT_FILE=result.txt

for /f %%i in (testservers.txt) do (
if not exist %OUTPUT_FILE% type NUL>%OUTPUT_FILE%
set SERVER_ADDRESS=ADDRESS N/A
for /f "tokens=2 delims=:" %%a in ('ping -n 1 %%i ^| find "TTL="') do (
if errorlevel 0 echo %%1 is up && set resultat=%%a
if errorlevel 1 echo %%i is down && set resultat=%%a is down
)

echo %%i [!SERVER_ADDRESS!::=] is !resultat! >>%OUTPUT_FILE%
set resultat=

)

关于batch-file - 从文本文件中读取字符串并使用批处理文件将其复制到另一个文本文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16443405/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com