Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 使用bat文件循环浏览FTP目录中的文件_Windows_Batch File_Ftp - Fatal编程技术网

Windows 使用bat文件循环浏览FTP目录中的文件

Windows 使用bat文件循环浏览FTP目录中的文件,windows,batch-file,ftp,Windows,Batch File,Ftp,我有一个批处理文件,由计划的windows服务每5分钟执行一次。批处理文件针对特定的文件掩码:*.ext执行mget。 在mget之后,它执行mdel*.ext。 最近我遇到了一个问题:当在执行mget和mdel之间创建一个文件z.ext时,该文件被删除,但它不在mget中。这当然是有道理的。 因此,现在我正在寻找合适的windows ftp命令,该命令将在文件中循环,并逐个文件执行mget和mdel文件。 这可能吗?ftp脚本非常有限,但我认为您可以使用。基本上,您必须运行ftp两次,首先收集

我有一个批处理文件,由计划的windows服务每5分钟执行一次。批处理文件针对特定的文件掩码:*.ext执行mget。 在mget之后,它执行mdel*.ext。 最近我遇到了一个问题:当在执行mget和mdel之间创建一个文件z.ext时,该文件被删除,但它不在mget中。这当然是有道理的。 因此,现在我正在寻找合适的windows ftp命令,该命令将在文件中循环,并逐个文件执行mget和mdel文件。
这可能吗?

ftp脚本非常有限,但我认为您可以使用。基本上,您必须运行ftp两次,首先收集要下载的文件列表,然后第二次下载(并删除)每个文件(结合大量cmd脚本),您仍然没有得到任何错误处理,ftp服务器的容错性也不确切

上述网站的相关示例如下:

@Echo Off

REM -- Define File Filter, i.e. files with extension .txt
Set FindStrArgs=/E /C:".txt"

REM -- Extract Ftp Script to create List of Files
Set "FtpCommand=ls"
Call:extractFileSection "[Ftp Script 1]" "-">"%temp%\%~n0.ftp"
Rem Notepad "%temp%\%~n0.ftp"

REM -- Execute Ftp Script, collect File Names
Set "FileList="
For /F "Delims=" %%A In ('"Ftp -v -i -s:"%temp%\%~n0.ftp"|Findstr %FindStrArgs%"') Do (
    Call Set "FileList=%%FileList%% "%%A""
)

REM -- Extract Ftp Script to download files that don't exist in local folder
Set "FtpCommand=mget"
For %%A In (%FileList%) Do If Not Exist "%%~A" Call Set "FtpCommand=%%FtpCommand%% "%%~A""
Call:extractFileSection "[Ftp Script 1]" "-">"%temp%\%~n0.ftp"
Rem Notepad "%temp%\%~n0.ftp"

For %%A In (%FtpCommand%) Do Echo.%%A

REM -- Execute Ftp Script, download files
ftp -i -s:"%temp%\%~n0.ftp"
Del "%temp%\%~n0.ftp"
GOTO:EOF


:extractFileSection StartMark EndMark FileName -- extract a section of file that is defined by a start and end mark
::                  -- [IN]     StartMark - start mark, use '...:S' mark to allow variable substitution
::                  -- [IN,OPT] EndMark   - optional end mark, default is first empty line
::                  -- [IN,OPT] FileName  - optional source file, default is THIS file
:$created 20080219 :$changed 20100205 :$categories ReadFile
:$source http://www.dostips.com
SETLOCAL Disabledelayedexpansion
set "bmk=%~1"
set "emk=%~2"
set "src=%~3"
set "bExtr="
set "bSubs="
if "%src%"=="" set src=%~f0&        rem if no source file then assume THIS file
for /f "tokens=1,* delims=]" %%A in ('find /n /v "" "%src%"') do (
    if /i "%%B"=="%emk%" set "bExtr="&set "bSubs="
    if defined bExtr if defined bSubs (call echo.%%B) ELSE (echo.%%B)
    if /i "%%B"=="%bmk%"   set "bExtr=Y"
    if /i "%%B"=="%bmk%:S" set "bExtr=Y"&set "bSubs=Y"
)
EXIT /b


[Ftp Script 1]:S
!Title Connecting...
open example.com
username
password

!Title Preparing...
cd public_html/MyRemoteDirectory
lcd c:\MyLocalDirectory
binary
hash

!Title Processing... %FtpCommand%
%FtpCommand%

!Title Disconnecting...
disconnect
bye
最好只在python或其他脚本环境中执行(假设您没有部署问题)