我试过在BAT中这样做,但我认为不能这样做。
已经问过 - 链接:batch-ftp-list-directories-and-put-in-array
目的:
/var/www/xxx.com/image/go
我对VBS很新,这不是我的事。但是BATCH似乎受限于FTP功能。
echo user xxx> c:\cmd.dat
echo 1234>> c:\cmd.dat
echo cd /var/www/xxx/html/TEST>> c:\cmd.dat
echo ls * c:\list.txt>> c:\cmd.dat
echo bye>> c:\cmd.dat
ftp -n -s:c:\cmd.dat xxx xxx xxx
REM This reads a file called list.txt and makes and array
REM - Removes blank lines
For /F "tokens=* delims=" %%A in (c:\list.txt) Do (
Echo %%A >> c:\list_clean.txt )
pause
set "file=c:\list.txt"
set /A i=0
for /F "usebackq delims=" %%a in ("%file%") do (
set /A i+=1
call echo %%i%%
call set array[%%i%%]=%%a
call set n=%%i%%
)
for /L %%i in (1,1,%n%) do call echo %%array[%%i]%%
pause
del c:\cmd.dat
del c:\wfslist.txt
我需要添加这些小说:
答案 0 :(得分:3)
这是一个仅用于测试的示例,只能列出位于公共ftp服务器(如ftp.microsoft.com)上的文件夹中的文件,以便创建list.txt文件以进行下载之后,请尝试告诉我们结果。
注意:请不要忘记添加标签批次
@echo off
mode con cols=85 lines=22 & Color A
::***********************************
Set FTPSERVER=ftp.microsoft.com
Title Lister les fichiers et les dossiers sur un serveur FTP (%FTPSERVER%) by Hackoo
Set USER=anonymous
Set Password=anonymous@anonymous.com
Set DossierFTP=/bussys/winsock/winsock2/
Set DownloadFolder=winsock2
::*******************************************************
Goto Lister
:Lister
> ft.do echo Open %FTPSERVER%
>> ft.do echo %USER%
>> ft.do echo %Password%
>> ft.do echo prompt n
>> ft.do echo bin
>> ft.do echo cd %DossierFTP%
>> ft.do echo ls -h TLIST.txt
>> ft.do echo bye
ftp -s:ft.do
del ft.do
CLS
Color 9B
echo Download la liste
pause
Goto Download
::*********************************************************
:Download
> ft.do echo Open %FTPSERVER%
>> ft.do echo %USER%
>> ft.do echo %Password%
>> ft.do echo prompt n
>> ft.do echo bin
>> ft.do echo cd %DossierFTP%
for /F %%f in (TLIST.txt) do ( >> ft.do echo get %%f)
>> ft.do echo bye
ftp -s:ft.do
del ft.do
CLS
Color 9A
pause
echo Deplacer la liste
Goto Deplacer
::*********************************************************
:Deplacer
Set Source=%~dp0
Set Destination=%Source%%DownloadFolder%
if not exist %DownloadFolder% MD %DownloadFolder%
for /F %%f in (TLIST.txt) do (move "%Source%%%f" "%Destination%")
pause
答案 1 :(得分:0)
这是我的尝试。
这是一个实用程序脚本,列出了一个远程目录(完整路径,没有别的)。它被设计为可重用(即它使用参数)并从其他脚本调用。
另存为ftpls.bat。
@echo off
setlocal
rem USAGE: call with 4 parameters
rem ftpls hostname USER PASS path/on/remote/machine
set "script=%TEMP%\ftpscript.txt"
set "output=%TEMP%\ftplist.txt"
set "host=%1"
set "user=%2"
set "pass=%3"
set "dir=%4"
> "%script%" echo open %host%
>> "%script%" echo user %user%
>> "%script%" echo %pass%
>> "%script%" echo cd %dir%
>> "%script%" echo ls * %output%
>> "%script%" echo bye
ftp -n -s:"%script%"
rem modify "skip" and "tokens" to select the right lines and columns
for /f "skip=1 tokens=6,*" %%a in (%output%) do (
echo %dir%/%%b
)
del "%script%"
del "%output%"
for
循环删除文件名(这是列表每行的最后一部分)。如果tokens
对您的FTP服务器不起作用,请选择正确的6,*
参数。 6,*
表示第6列将变为%%a
,其余部分(*
)将变为%%b
。 6应该是文件名前面的列。
单独调用
ftpls xxx.xxx.xxx.xxx USER PASS /var/www/xxx/html/TEST
在另一个批处理文件中使用它,如
set cmd=ftpls xxx.xxx.xxx.xxx USER PASS /var/www/xxx/html/TEST
for /f "delims=" %%a in ('%cmd%') do (
echo %%a
)