Клиент командной строки Windows FTP загружает не все файлы с помощью mget *

#windows #batch-file #cmd #ftp

#Windows #пакетный файл #cmd #ftp

Вопрос:

Я использую пакетный файл для удаленного FTP и пытаюсь загрузить все файлы в определенном каталоге с помощью mget *.* . Но во время передачи он загружает не все файлы.

Это мой скрипт:

 open 192.168.31.93
*user*
*password*
binary
cd *directory*
mget *.*
close
  

Вывод скрипта:

 ftp> Connected to 192.168.31.95.

open 192.168.31.95
220 i4hp FTP server (Version 1.7.212.2 Tue Apr 21 12:14:46 GMT 1998) ready.
User (192.168.31.95:(none)): ---> 
USER ifour
331 Password required for ifour.
---> 
PASS ifour22
230 User ifour logged in.
ftp> Interactive mode Off .

ftp> prompt
---> binary
TYPE I
200 Type set to I.
ftp> ---> cd /console/i4/work/job/hd/bin
CWD /console/i4/work/job/hd/bin
250 CWD command successful.
ftp> ---> ls
TYPE A
---> PORT 192,168,31,93,16,208
200 PORT command successful.
---> NLST
150 Opening ASCII mode data connection for file list.
file.dbv

errlog

file.db

para.job

job.exp

job.exp.b

.SF.pickupdb.wind

.SF.pickupdb.ptype

.SF.dbnichijor

.SF.dbnichijor2

.SF.db.JOBD.Main

lockfile

.SF.db.JOBD.Main.PP.revc

.SF.db.JOBD.Main.pconect.revc

.SF.db.JOBD.Main.ftype.revc

.SF.db.JOBD.Edit

.SF.db.JOBD.Edit.PP.revc

.SF.db.JOBD.Edit.pconect.revc

.SF.db.JOBD.Edit.ftype.revc

.SF.db.queued.Daemon

.SF.db.JOBD.Main.Pi.fffb0000:0

.SF.db.JOBD.Main.Pi.fffb0000:1

.SF.db.JOBD.Main.Pi.fffb0000:2

.SF.db.JOBD.Main.Pi.fffb0000:3

.SF.db.JOBD.Main.Pi.fffb0000:4

.SF.db.JOBD.Main.Pi.fffb0000:5

.SF.db.JOBD.Main.Pi.fffb0000:6

.SF.db.JOBD.Main.Pi.fffb0000:7

.SF.db.JOBD.Main.Pi.fffb0000:8

.SF.db.JOBD.Main.Pi.fffb0000:9

.SF.db.JOBD.Main.Pi.fffb0000:10

.SF.db.JOBD.Main.fffb09

.SF.db.JOBD.Main.fffb0b

.SF.db.JOBD.Main.fffb0a

.SF.db.JOBD.Main.fffb08

... (lots of files omitted)

226 Transfer complete.
ftp: 34913 bytes received in 0.25Seconds 139.65Kbytes/sec.

---> TYPE I
ftp> ---> mget *.*
TYPE A
---> PORT 192,168,31,93,16,209
---> NLST *.*
---> TYPE I
200 Type set to I.
---> PORT 192,168,31,93,16,210
200 PORT command successful.
---> RETR file.db
150 Opening BINARY mode data connection for file.db (134437620 bytes).
226 Transfer complete.
ftp: 134437620 bytes received in 120.22Seconds 1118.28Kbytes/sec.

---> PORT 192,168,31,93,16,213
200 PORT command successful.
---> RETR file.dbv
150 Opening BINARY mode data connection for file.dbv (42766240 bytes).
226 Transfer complete.
ftp: 42766240 bytes received in 38.36Seconds 1114.89Kbytes/sec.

---> PORT 192,168,31,93,16,221
200 PORT command successful.
---> RETR job.exp
150 Opening BINARY mode data connection for job.exp (14752535 bytes).
226 Transfer complete.
ftp: 14752535 bytes received in 13.25Seconds 1113.40Kbytes/sec.

---> PORT 192,168,31,93,16,222
200 PORT command successful.
---> RETR job.exp.b
150 Opening BINARY mode data connection for job.exp.b (12997544 bytes).
226 Transfer complete.
ftp: 12997544 bytes received in 11.78Seconds 1103.26Kbytes/sec.

---> PORT 192,168,31,93,16,223
200 PORT command successful.
---> RETR para.job
150 Opening BINARY mode data connection for para.job (76751 bytes).
226 Transfer complete.
ftp: 76751 bytes received in 0.22Seconds 350.46Kbytes/sec.

ftp> ---> disconnect
QUIT
221 Goodbye.
ftp> quit
  

Комментарии:

1. Покажите нам свой полный ftp скрипт. Покажите нам эквивалентный файл журнала FileZilla.

2. @MartinPrikryl я добавил другое изображение «filezilla» в свой основной пост вместе с кодировкой.

3. Файл журнала, а не скриншот панели.

4. И нам нужно хотя бы какое-то имя-заполнитель для каталога в вашем скрипте, чтобы мы могли сравнить его с журналом FileZilla.

5. @MartinPrikryl привет, я добавил скриншот моего кода в разделе «ftp_screenshot» и прикрепил журнал filezilla через dropbox

Ответ №1:

mget <mask> команда в ftp клиенте командной строки Windows внутренне использует NLST <mask> команду протокола FTP. Ваш FTP-сервер не возвращает файлы «dot» для NLST * (вероятно, потому, что он считает их скрытыми).

Вам придется использовать другой FTP-клиент, который не предоставляет серверу разрешение маски файла.

Например, с FTP-клиентом WinSCP это будет работать:

 winscp.com /ini=nul /log=ftp.log /command ^
    "open ftp://user:password@192.168.31.93/" ^
    "cd /remote/directory" ^
    "mget *" ^
    "exit"
  

Существует даже руководство по преобразованию ftp скрипта в скрипт WinSCP.

(Я автор WinSCP)