我尝试创建批处理文件的组合,使用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个文件,从我的角度来看是一样的。
提前致谢!!
答案 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
)