FTP: получить и удалить определенное количество файлов

Я пытаюсь создать комбинацию пакетных файлов с командами ftp для получения и удаления определенного количества файлов из каталога FTP. Теперь я застрял и получаю все файлы, но часто, когда в каталоге более 250 файлов, пакет останавливается и продолжить невозможно.

Это моя реальная ситуация, у меня есть эти 3 файла:

FILE 01_FTP_GetFileList.bat

компакт-диск C: \ папка

ftp -s: 02_FTP_GetFileList.txt

C: \ папка \ 03_FTP_MoveFiles.bat

ФАЙЛ 02_FTP_GetFileList.txt

открыть xxx.xxx.xxx.xxx

Пользователь

пароль

хэш

подсказать

cd папка

жк-папка

ls * .gz filelist.txt

до свидания

FILE 03_FTP_MoveFiles.bat

@echo off

setlocal enableextensions

setlocal enabledelayedexpansion

echo open xxx.xxx.xxx.xxx >> myscript

эхо пользователя пароль пользователя >> myscript

эхо-запрос n >> myscript

эхо ascii >> myscript

echo cd папка >> myscript

эхо ЖК-дисплей C: \ папка >> myscript

for / F "usebackq tokens = 1,2 * delims =," %% G IN ("C: \ folder \ filelist.txt") DO echo mget %% G >> myscript

for / F "usebackq tokens = 1,2 * delims =," %% G IN ("C: \ folder \ filelist.txt") DO echo mdelete %% G >> myscript

эхо до свидания >> myscript

ftp -n -s: myscript

del filelist.txt

дель myscript

Чтобы продолжить, первый файл вызывает 2-й и 3-й, и, как вы можете видеть в коде, я получаю и удаляю все файлы * .gz в определенном каталоге после перечисления файлов в этом каталоге (чтобы избежать удаления файла добавлен после копии).

Теперь я хотел бы скопировать только первый файл из списка или ... перечислить только 100 файлов в папке, с моей точки зрения то же самое.

Заранее спасибо!!


person MarcaSolkanar    schedule 25.02.2016    source источник
comment
Вы могли бы поставить счетчик в цикл и остановиться после 100? См. SET /A   -  person lit    schedule 26.02.2016
comment
Да могу, я должен поместить это в третий файл? Таким образом, в filelist.txt будет весь список, но будут скопированы только первые 100. Верно?   -  person MarcaSolkanar    schedule 29.02.2016
comment
Вы можете использовать ftp -i, чтобы отключить интерактивные подсказки.   -  person lit    schedule 29.02.2016


Ответы (1)


Я не вижу в сообщении какой-либо переменной счетчика. В приведенном ниже коде в качестве счетчика используется FILE_COUNT. Он увеличивается с помощью оператора SET /A FILE_COUNTER+=1. FILE_COUNT проверяется на то, чтобы быть меньше 100. См. SET /?.

SETLOCAL ENABLEDELAYEDEXPANSION

SET MAX_FILES=100
SET /S FILE_COUNT=0

FOR /F "usebackq tokens=1,2 delims=," %%a IN (`TYPE "C:\folder\filelist.txt"`) DO (
    IF !FILE_COUNT! LSS %MAX_FILES% (
        echo mget %%a>>myscript
        echo mdelete %%a>>myscript
    )

    SET /A FILE_COUNT+=1
)
person lit    schedule 29.02.2016
comment
Спасибо, литург, я только что кое-что изменил, потому что вы написали: echo mget %% G, и я заменил его на echo mget %% a. Теперь все работает нормально. Это действительно замедляет передачу. Но работает. Если у вас есть какие-либо советы по ускорению передачи, пожалуйста, скажите мне =) Ура - person MarcaSolkanar; 17.03.2016
comment
@MarcaSolkanar - Мои извинения. Я исправил это и несколько других деталей в коде. Я рад, что это помогло, даже если оно было не идеально. - person lit; 17.03.2016