我的脚本的目的是,如果 ftp 连接失败,它将把错误级别设置为 1 并转到 :fine(以便打印正确的消息),或者,如果提示打印特定文本,如
> ftp: connect :Connection timed out
,执行某些操作(转到或其他操作)。
echo off
SET /A CWP=1
SET /A LIMIT=6
:next
ftp -s:keyb.txt 10.81.32.20%CWP%
if %errorlevel% EQU 1 goto fine
echo.
echo ***************************************
echo * Copied succesfully on CWP .20%CWP% *
echo ***************************************
echo.
if %CWP% EQU %LIMIT% goto end
SET /A CWP+=1
goto next
:fine
echo.
echo ***************************************
echo * NOT Copied on CWP .20%CWP% *
echo ***************************************
echo.
if %CWP% EQU %LIMIT% goto end
goto next
:end
echo Total error %errorlevel%
echo CWP done %CWP%/6
echo **********************
echo * FINISHED *
echo **********************
我已经尝试过
find /c "text" batch.bat <nul
,但我不确定它是如何工作的。
要检查
ftp
命令输出中的特定文本,您可以使用以下方法:
ftp
命令的输出重定向到临时文件。findstr
命令检查临时文件的内容中是否有所需文本。findstr
的退出代码,采取适当的操作。这是修改后的脚本:
@echo off
SET /A CWP=1
SET /A LIMIT=6
:next
ftp -s:keyb.txt 10.81.32.20%CWP% > temp.txt 2>&1
findstr /c:"ftp: connect :Connection timed out" temp.txt > nul
if %errorlevel% equ 0 (
echo Connection timed out for CWP .20%CWP%
goto fine
)
if %errorlevel% equ 1 (
echo.
echo ***************************************
echo * Copied succesfully on CWP .20%CWP% *
echo ***************************************
echo.
)
if %CWP% EQU %LIMIT% goto end
SET /A CWP+=1
goto next
:fine
echo.
echo ***************************************
echo * NOT Copied on CWP .20%CWP% *
echo ***************************************
echo.
if %CWP% EQU %LIMIT% goto end
goto next
:end
echo Total error %errorlevel%
echo CWP done %CWP%/6
echo **********************
echo * FINISHED *
echo **********************
del temp.txt