我试图根据文件名从FTP服务器下载一些文件并将它们放置在不同的文件夹中。
使用:
FOR /F "tokens=1 delims=" %%i IN (%binpath%inputfilelist.txt) DO ECHO. get %%i >> %binpath%unixftp_get1.txt
我遇到了错误:
%% i这一次出乎意料
我已经检查了inputfilelist.txt
中的文件,有2
个文件可用。
REM **********************Determine input file count*******************************************
SET target=TXT
CHDIR /d %binpath%
find /c "%target%" < %binpath%inputfilelist.txt > %binpath%inputfilecount.txt
SET /p inputfile_cnt=<%binpath%inputfilecount.txt
IF %inputfile_cnt%!==!0 GOTO PROCEED
IF %inputfile_cnt%==0 GOTO END
:PROCEED
REM ******************** Dynamically create the ftp get commands file and download the files*************************
copy %binpath%unix_ftp.config %binpath%unixftp_get1.txt
FOR /F "tokens=1 delims=" %%i IN (%binpath%inputfilelist.txt) DO ECHO. get %%i >> %binpath%unixftp_get1.txt
ECHO. bye >> %binpath%unixftp_get1.txt
ftp -v -s:"%binpath%unixftp_get1.txt" %server% >> "%logpath%%ftp_log%"
预期结果是文件名abc.txt
必须附加在文件unixftp_get1.txt
中。
答案 0 :(得分:0)
如果您看一下这一行:
IF %inputfile_cnt%!==!0 GOTO PROCEED
它不会GOTO PROCEED
,因为您的比较期望 #!
与 !0
,(其中{{ 1}}是包含#
)的行数,但显然永远不会。
要解决此问题,通常应使用以下语法:
TXT
然后您将其下方的行更改为:
IF NOT "%inputfile_cnt%"=="0" GOTO PROCEED
这里是您代码段的重写,请尝试一下并根据需要提供反馈:
GOTO END