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

时间:2016-02-25 15:51:13

标签: batch-file cmd ftp move

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

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

FILE 01_FTP_GetFileList.bat

  

cd C:\ folder

     

ftp -s:02_FTP_GetFileList.txt

     

C:\文件夹\ 03_FTP_MoveFiles.bat

FILE 02_FTP_GetFileList.txt

  

打开xxx.xxx.xxx.xxx

     

用户

     

密码

     

散列

     

提示关闭

     

cd文件夹

     

lcd文件夹

     

ls * .gz filelist.txt

     

再见

FILE 03_FTP_MoveFiles.bat

  

@echo off

     

setlocal enableextensions

     

setlocal enabledelayedexpansion

     

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

     

回显用户用户密码>> myscript

     

echo提示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个文件,从我的角度来看是一样的。

提前致谢!!

1 个答案:

答案 0 :(得分: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
)