标题: [文件操作] [已解决]删除FTP服务器指定目录下N日前文件的批处理? [打印本页]
作者: qwertl 时间: 2009-7-20 00:33 标题: [已解决]删除FTP服务器指定目录下N日前文件的批处理?
- set lcdDir=e:\ftp
- set delfile=e:\ftp\delfile.txt
- set ftpdir=/test
- for /f %%A in ('datex -f mmdd -o-3') do echo %%A&set dstday=%%A
- (for /f "usebackq skip=2 tokens=1-9 delims= " %%a in ("%lcdDir%\a.txt") do (
- setlocal enabledelayedexpansion
- if "%%f" equ "Jan" (
- set FileM=01
- ) else if "%%f" equ "Feb" (
- set FileM=02
- ) else if "%%f" equ "Mar" (
- set FileM=03
- ) else if "%%f" equ "Apr" (
- set FileM=04
- ) else if "%%f" equ "May" (
- set FileM=05
- ) else if "%%f" equ "Jun" (
- set FileM=06
- ) else if "%%f" equ "Jul" (
- set FileM=07
- ) else if "%%f" equ "Aug" (
- set FileM=08
- ) else if "%%f" equ "Sep" (
- set FileM=09
- ) else if "%%f" equ "Oct" (
- set FileM=10
- ) else if "%%f" equ "Nov" (
- set FileM=11
- ) else if "%%f" equ "Dec" (
- set FileM=12
- )
- set FileD=%%g
- if "!FileM!%FileD%" lss "%dstday%" (
- echo del /%ftpdir%/"%%i"
- )
- endlocal
- ))>>"%delfile%"
复制代码
参照http://bbs.bathome.net/viewthread.php?tid=4010&extra=&highlight=ftp&page=5
改了下,应用了datex.exe计算日期,本例计算3天前日期,3天的前的该目录下文件全删除。 if "!FileM!%FileD%" lss "%dstday%"这里的计算没有生效,需怎改请各位指正??
省略了FTP的连接代码。先从手动获取的a.txt里测试。
E:\ftp>date /t
2009-07-20 星期一
E:\ftp>echo %dstday%
0717
dir * a.txt 生成的文本格式:
drw-rw-rw- 1 user group 0 Jul 19 19:07 .
drw-rw-rw- 1 user group 0 Jul 19 19:07 ..
-rw-rw-rw- 1 user group 23245249 Jul 14 22:35 12wzglk-doc20090711.zip
-rw-rw-rw- 1 user group 23482564 Jul 14 22:35 12wzglk-doc20090714.zip
-rw-rw-rw- 1 user group 23170568 Jul 15 18:15 12wzglk-doc20090715.zip
-rw-rw-rw- 1 user group 700080 Jul 16 18:15 12wzglk-doc20090716.zip
-rw-rw-rw- 1 user group 794025 Jul 17 18:15 12wzglk-doc20090717.zip
-rw-rw-rw- 1 user group 794025 Jul 18 18:15 12wzglk-doc20090718.zip
-rw-rw-rw- 1 user group 794025 Jul 19 18:15 12wzglk-doc20090719.zip
。。。。。。。。。。。。。。
执行bat 后生成的E:\ftp\delfile.txt内容为:
del /test/12wzglk-doc20090711.zip
del /test/12wzglk-doc20090714.zip
del /test/12wzglk-doc20090715.zip
del /test/12wzglk-doc20090716.zip
del /test/12wzglk-doc20090717.zip
del /test/12wzglk-doc20090718.zip
del /test/12wzglk-doc20090719.zip
.........
正常应不显示17日后的文件。
我的QQ:1227466295
[ 本帖最后由 qwertl 于 2009-7-20 09:33 编辑 ]
作者: qwertl 时间: 2009-7-20 07:26
摘自Batcher的代码
- @echo off
- rem 指定FTP用户名
- set ftpUser=asx
- rem 指定FTP密码
- set ftpPass=asx-asx
- rem 指定FTP服务器地址
- set ftpIP=172.19.103.7
- rem 指定待下载的文件位于FTP服务器的什么位置
- set ftpFolder=/export/home/PROD/ntcdata
- rem 指定从FTP下载下来的文件存放到什么地方
- set DownFolder=E:\Temp
- set DownFolder2=E:\Temp2
- rem 指定下载几天前的文件
- set DaysAgo=1
- set ftpDir=%temp%\TempDir.txt
- set ftpDown=%temp%\TempDown.txt
-
- rem 假设本机日期格式为yyyy-mm-dd
- set FileY=%date:~0,4%
- call :DateToDays %date:~0,4% %date:~5,2% %date:~8,2% PassDays
- set /a PassDays-=DaysAgo
- call :DaysToDate %PassDays% DstYear DstMonth DstDay
-
- >"%ftpDir%" echo.%ftpUser%
- >>"%ftpDir%" echo.%ftpPass%
- >>"%ftpDir%" echo bin
- >>"%ftpDir%" echo cd "%ftpFolder%"
- >>"%ftpDir%" echo dir * "%temp%\FileList.txt"
- >>"%ftpDir%" echo bye
- start ftp -v -i -s:"%ftpDir%" %ftpIP%
-
- rem 根据实际情况自行调节延迟时间
- ping -n 200 127.1 >nul
-
- findstr /i ":*\.SWM$" "%temp%\FileList.txt">"%temp%\FileDate.txt"
- findstr /i ":*\.TWM$" "%temp%\FileList.txt">>"%temp%\FileDate.txt"
- findstr /i ":*\.OWM$" "%temp%\FileList.txt">>"%temp%\FileDate.txt"
-
- >"%ftpDown%" echo.%ftpUser%
- >>"%ftpDown%" echo.%ftpPass%
- >>"%ftpDown%" echo bin
- >>"%ftpDown%" echo cd "%ftpFolder%"
- (for /f "usebackq tokens=1-9 delims= " %%a in ("%temp%\FileDate.txt") do (
- setlocal enabledelayedexpansion
- if "%%f" equ "Jan" (
- set FileM=01
- ) else if "%%f" equ "Feb" (
- set FileM=02
- ) else if "%%f" equ "Mar" (
- set FileM=03
- ) else if "%%f" equ "Apr" (
- set FileM=04
- ) else if "%%f" equ "May" (
- set FileM=05
- ) else if "%%f" equ "Jun" (
- set FileM=06
- ) else if "%%f" equ "Jul" (
- set FileM=07
- ) else if "%%f" equ "Aug" (
- set FileM=08
- ) else if "%%f" equ "Sep" (
- set FileM=09
- ) else if "%%f" equ "Oct" (
- set FileM=10
- ) else if "%%f" equ "Nov" (
- set FileM=11
- ) else if "%%f" equ "Dec" (
- set FileM=12
- )
- set FileD=10%%g
- set FileD=!FileD:~-2!
- if "!FileM!" equ "%DstMonth%" (
- if "!FileD!" equ "%DstDay%" (
- echo get "%%i" "%DownFolder%\%%i"
- )
- )
- endlocal
- ))>>"%ftpDown%"
复制代码
set FileD=10%%g
set FileD=!FileD:~-2!
if "!FileM!" equ "%DstMonth%" (
if "!FileD!" equ "%DstDay%" (
echo get "%%i" "%DownFolder%\%%i"
)
)
请教如上小部分代码中,要修改"!FileM!" "!FileD!"(连接一起组成的数字) 小于及等于 "%DstDay%"要怎样修改呢?
作者: qwertl 时间: 2009-7-20 07:37
set FileD=10%%g
set FileD=!FileD:~-2!
if "!FileM!!FileD!" leq "%DstMonth%%DstDay%" (
echo get "%%i" "%DownFolder%\%%i"
)
endlocal
修改为如上可以了。
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |