FTP:获取和删除特定数量的文件
Posted
技术标签:
【中文标题】FTP:获取和删除特定数量的文件【英文标题】:FTP: get and delete a specific number of files 【发布时间】:2016-06-08 12:13:21 【问题描述】:我正在尝试创建批处理文件的组合,并使用 ftp 命令从 FTP 目录中获取和删除特定数量的文件。 现在我被卡住了,我得到了所有文件,但是当目录中有超过 250 个文件时,批处理停止并且无法继续。
这是我的实际情况,我有这3个文件:
FILE 01_FTP_GetFileList.bat
cd C:\文件夹
ftp -s:02_FTP_GetFileList.txt
C:\folder\03_FTP_MoveFiles.bat
文件 02_FTP_GetFileList.txt
打开 xxx.xxx.xxx.xxx
用户
密码
散列
提示关闭
cd 文件夹
液晶文件夹
ls *.gz filelist.txt
再见
文件 03_FTP_MoveFiles.bat
@echo 关闭
设置本地启用扩展
setlocal enabledelayedexpansion
回显打开 xxx.xxx.xxx.xxx>>我的脚本
echo 用户用户密码>>myscript
回显提示 n>>myscript
echo ascii>>myscript
echo cd 文件夹>>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
回声再见>>我的脚本
ftp -n -s:myscript
删除文件列表.txt
删除我的脚本
要恢复,第一个文件会调用第二个和第三个文件,正如您在代码中看到的那样,我在列出该目录中的文件后获取并删除特定目录中的所有 *.gz 文件(这是为了避免删除复制后添加的文件)。
现在我想只复制列表的第一个文件,或者...只列出文件夹中的 100 个文件,在我看来是一样的。
提前致谢!!
【问题讨论】:
你可以在循环中加入一个计数器并在 100 之后停止?见SET /A
是的,我可以,我必须把它放在第三个文件中?这样, filelist.txt 将拥有整个列表,但只会复制前 100 个。对吗?
您可能想使用ftp -i
关闭交互式提示。
【参考方案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
)
【讨论】:
谢谢 Liturgist 我刚刚更改了一个东西,因为您写道:echo mget %%G 我用 echo mget %%a 代替它。现在它工作正常。传输速度真的很慢。但有效。如果您对加快传输有任何建议,请告诉我 =) 干杯 @MarcaSolkanar - 我很抱歉。我已经更正了这一点以及代码中的一些其他细节。我很高兴它有所帮助,即使它不够完美。以上是关于FTP:获取和删除特定数量的文件的主要内容,如果未能解决你的问题,请参考以下文章