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很好!我尝试使用Conditionalsif
,将成功传输的文件一词作为参考,以执行回显
操作。但什么也没发生,也许我猜是因为它是一个内部代码。如果上传成功,我希望它显示:文件已传输
,如果未上传,则显示未传输。稍后再试
只需即兴回答(ftp-i-s:%temp%/ftpsend.dat|find/i“文件已成功传输”>nul)和(回音文件已成功发送)&&&(del/f/s/q“c:\Vendas Pay&Go\files\*.txt”>nul)|(cls)和(回音文件未上载。请稍后再试)
很好!非常感谢。