设置提示中显示特定文本时的操作(批处理文件)

问题描述 投票:0回答:1

我的脚本的目的是,如果 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
,但我不确定它是如何工作的。

batch-file text find errorlevel
1个回答
0
投票

要检查

ftp
命令输出中的特定文本,您可以使用以下方法:

  1. ftp
    命令的输出重定向到临时文件。
  2. 使用
    findstr
    命令检查临时文件的内容中是否有所需文本。
  3. 根据
    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
© www.soinside.com 2019 - 2024. All rights reserved.