FTP:获取并删除特定数量的文件

FTP: get and delete a specific number of files

我正在尝试创建批处理文件的组合,使用 ftp 命令从 FTP 目录中获取和删除特定数量的文件。 现在我卡住了,我得到了所有文件,但经常,当目录中的文件超过 250 个时,批处理停止并且无法继续。

这是我的实际情况,我有这3个文件:

文件01_FTP_GetFileList.bat

cd C:\folder

ftp -s:02_FTP_GetFileList.txt

C:\folder_FTP_MoveFiles.bat

文件 02_FTP_GetFileList.txt

open xxx.xxx.xxx.xxx

user

password

hash

prompt off

cd folder

lcd folder

ls *.gz filelist.txt

bye

文件03_FTP_MoveFiles.bat

@echo off

setlocal enableextensions

setlocal enabledelayedexpansion

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

echo user user password>>myscript

echo prompt n>>myscript

echo ascii>>myscript

echo cd folder>>myscript

echo lcd C:\folder>>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

echo bye>>myscript

ftp -n -s:myscript

del filelist.txt

del myscript

要恢复,第一个文件调用第二个和第三个文件,正如您在代码中看到的,我在列出该目录中的文件后获取并删除了特定目录中的所有 *.gz 文件(这避免删除复制后添加的文件)。

现在我想只复制列表的第一个文件或...只列出文件夹中的 100 个文件,在我看来是一样的。

提前致谢!!

我在 post 中没有看到任何计数器变量。下面的代码使用 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
)