Batch file 将文件发送到ftp服务器,然后检查是否确实使用.bat发送了文件

Batch file 将文件发送到ftp服务器,然后检查是否确实使用.bat发送了文件,batch-file,ftp,Batch File,Ftp,我正在制作一个.bat代码,将.txt文件发送到ftp服务器上的特定文件夹。但我也想要一种方法来检查这些文件是否真的上传了。我在互联网上搜索了很多,不幸的是我意识到使用.bat命令是无法完成的。 因此,我尝试使用另一种方式:.bat将发送文件,然后将其带回文件夹,如果文件夹中已存在该文件,则会显示一条消息,表明该文件已成功上载 我在下面做了这个脚本,但是“检查是否上传了”部分工作不正常 有人能帮我吗 @echo off @setlocal enableextensions @cd /d "%~d

我正在制作一个
.bat
代码,将
.txt
文件发送到ftp服务器上的特定文件夹。但我也想要一种方法来检查这些文件是否真的上传了。我在互联网上搜索了很多,不幸的是我意识到使用
.bat
命令是无法完成的。 因此,我尝试使用另一种方式:
.bat
将发送文件,然后将其带回文件夹,如果文件夹中已存在该文件,则会显示一条消息,表明该文件已成功上载

我在下面做了这个脚本,但是“检查是否上传了”部分工作不正常

有人能帮我吗

@echo off
@setlocal enableextensions
@cd /d "%~dp0"
mode 34,12
color 0a

Ping www.google.nl -n 1 -w 1000 >nul 2>nul
if errorlevel 1 (set internet=Nao foi possivel se conectar ao servidor) else (set internet=Conectado) >nul 2>nul

echo  %internet%

if "%internet%"=="No connection" goto 1
if "%internet%"=="Conected" goto 2

:1 
echo  No connection
echo.
echo  Try later...
echo.
pause
exit

:2
( echo open ftp.xxxxxxxxxxx.com
echo xxxxxxx
echo xxxxxxx
echo ascii
echo lcd "c:\Vendas Pay&Go\files"
echo cd "Vendas Cartões Pay&Go"
echo cd "ECO"

echo mput *.txt 
echo bye 
)> %temp%\ftpsend.dat
ftp -i -s:%temp%/ftpsend.dat >nul 2>nul
del /f /s /q %temp%\ftpsend.dat >nul 2>nul

( echo open ftp.xxxxxxx.com
echo xxxxxxx
echo xxxxxxx
echo ascii
echo lcd "c:\Vendas Pay&Go\files"
echo cd "Vendas Cartões Pay&Go"
echo cd "ECO"

echo mget *.txt 
echo bye 
)> %temp%\ftpsend.dat
ftp -i -s:%temp%/ftpsend2.dat >nul 2>nul
del /f /s /q %temp%\ftpsend2.dat >nul 2>nul

if %*.txt% exist goto3

:4
echo File was not uploaded
pause

:3
echo File Uploaded.
del /s /f /q "c:\Vendas Pay&Go\files\*.txt"

如果希望通过条件执行来显示消息,可以执行以下操作。&&表示上一个命令已成功。| |表示上一个命令未成功

(ftp -i -s:%temp%/ftpsend.dat | find /I "file successfully transferred" >nul) && (echo File Successfully Transferred) || ( echo File not transferred. Tray again later.)
更新版本基于下面的评论

(ftp -i -s:%temp%/ftpsend.dat | find /I "file successfully transferred" >nul) && (
        echo File successfully sent.
        del /f /s /q "c:\Vendas Pay&Go\files\*.txt" >nul
    ) || (
        cls
        echo File not uploaded. Try later.
    ) 

如果捕获FTP命令的详细输出,它将告诉您文件是否已成功上载。无需再次尝试下载以查看是否成功上载。我从未见过任何日志文件,告诉我文件已成功上载,但在ftp服务器上看不到该文件。我每天运行几十个自动FTP批处理文件,解析详细输出从来都不是问题。不管前面的评论如何,如果您实际阅读了
if
命令的帮助文件,您将看到以下用法语法:
if EXIST filename command
。那么根据这些信息,你做错了什么?@Squashman我猜脚本中有一些错误。不管怎样,我正在检查。我喜欢你说的ftp的详细输出,但我只是希望它以单独的回音显示,而不是与所有ftp回音一起显示。
ftp-I-s:%temp%/ftpsend.dat | find/I“文件成功传输”
@Squashman很好!我尝试使用Conditionals
if
,将成功传输的文件
一词作为参考,以执行
回显
操作。但什么也没发生,也许我猜是因为它是一个内部代码。如果上传成功,我希望它显示:
文件已传输
,如果未上传,则显示
未传输。稍后再试
只需即兴回答
(ftp-i-s:%temp%/ftpsend.dat|find/i“文件已成功传输”>nul)和(回音文件已成功发送)&&&(del/f/s/q“c:\Vendas Pay&Go\files\*.txt”>nul)|(cls)和(回音文件未上载。请稍后再试)
很好!非常感谢。