forfiles /p X:\FTP_ROOT /s /D -10 /C "cmd /c del /f @file"
將...以上命令.存成一個DELOLDFILE.BAT...
再去WINDOWS排程管理員跑.....
適用win2000 2003 2008...XP有的沒有forfiles...
FTP Server 的系統是什麼的? 這樣才有辦法解決問題吧 ~~
如果是由別人提供的系統, 那使用 FTP 軟體連入後, 依日期排列, 就可以刪除了
如果系統是放在內部的, 那由批次指令排程就可以自動刪除了
如果 server 是 Linux 就好辦,可以寫 shell script 把太老舊的檔案刪除(ftp 的目錄,其實也是 Linux 上的目錄),然後用 cron 排程,或是手動執行。
Windows 也可以這樣做,不過批次檔可能要用 PowerScript
如果 server 是 Windows 的, 用免費的auto delete工具就可以做了,
不用傷腦筋自己寫 script.
這個軟體不錯用 Cyber-D's Autodelete
http://www.softpedia.com/get/System/System-Miscellaneous/Cyber-D-s-Autodelete.shtml
到微軟指令碼中心
下載這個檔 HeyScriptingGuy.exe
解開後 閱讀 hey_archive.chm
在 file,folders and file systems\file 這個類別底下
稍微修改這三篇範例中的其中一個
How Can I Delete All the .BAK Files in a Folder That Are More Than 7 Days Old?
How Can I Delete All Files Older Than a Specified Date?
How Can I Delete a Backup File Created on the Previous Day?
搭配 Windows的排程就搞定了。
抱歉因為我手上沒有正好符合的指令碼給你用,只能請你自己參考修改一下囉!
個人推薦用robocopy
刪除 N 天前的檔案 robocopy.exe
http://blog.ithome.com.tw/index.php?op=ViewArticle&articleId=17443&blogId=1013
自動在windows執行 每天刪除n天前的檔案
http://keenkiller0603.blogspot.com/2008/08/windows-n.html
推薦Robocopy ,很好用的檔案複製、搬移工具!
哈.. 竟然無意間發現我的文件被引用..
刪除 N 天前的檔案 robocopy.exe
http://blog.ithome.com.tw/index.php?op=ViewArticle&articleId=17443&blogId=1013
要設定能自動刪除存放在 FTP Server 已久的資料是可以的
但...什麼時候需要找那些舊檔案,
當你找不到的時候
是不是在那邊東翻西翻所有的資料夾
最好不要這樣設定 ... " 很危險 "
建立一個 vbs 檔案,內容如下,只要改天數跟目錄路徑即可,再定排程執行
' 指定所有變數必須事先宣告才能使用
Option Explicit
' 宣告變數
Dim FSO, agoDays, modifiedDate, delFolder
' 請將下面的變數值換成你要的
' == 開始 ==
' 指定 n 天前的檔案,現在是 7 天前
agoDays = 7' 欲刪除檔案所在之目錄
delFolder = "D:\FTP"
' == 結束 ==
' 建立檔案系統物件(File System Object)
Set FSO = CreateObject("Scripting.FileSystemObject")
' 取得檔案的修改日期
modifiedDate = DateAdd("d", -agoDays, Date)
' 呼叫刪除檔案的子程序
DelFilesInFolder FSO.GetFolder(delFolder)
' 刪除檔案的子程序
Sub DelFilesInFolder(folder)
' 宣告變數
Dim file, subFolder
' 找出目前所在目錄內所有的檔案
For Each file In folder.Files
' 檢查檔案日期是否符合條件,若符合,就刪除
If ((file.DateLastModified <= modifiedDate)) Then
file.delete
End If
Next
' 如果遇到子目錄,也要進去檢查並刪除
For Each subFolder in folder.SubFolders
DelFilesInFolder subFolder
Next
End Sub
=此Script理論上可以跨平台=
下載activePerl-Win32,安裝它 (假設沒安裝過perl在windows機器上)
或
可以使用perl2Exe將script轉成執行檔(perl2Exe非免費軟體)
以下是我之前回答相似的問題,此次改版過的CODE
開一個文字檔名為delOverdue.pl,把code拷貝進去,開終端機執行該script。
命令格式:
$delOverdue <targetDir> <seconds>
<targetDir> Target directory
<seconds> Expire seconds
<pre class="c" name="code">
#!/usr/bin/perl -w
if(@ARGV != 2){
print "delOverdue <targetDir> <seconds>";
exit -1;
}
if (!($ARGV[1] =~ /^[+-]?\d+$/ )) {
print "<seconds> must be a number!\n";
exit -1;
}
if (!((-e $ARGV[0])&&(-d $ARGV[0]))){
print "It's not directory or not exist!\n";
exit -1;
}
deldir($ARGV[0],$ARGV[1]); # or deldir($ARGV[0]) to make it commandline
print "Process done!\n";
sub deldir {
my $dirtodel = shift;
my $timeLimit = shift;
my $sep = '/';
my $now=time();
opendir(DIR, $dirtodel) or die "Open dir fail!\n$!\n";
my @files = readdir(DIR);
closedir(DIR);
@files = grep { !/^\.{1,2}/ } @files;
@files = map { $_ = "$dirtodel$sep$_"} @files;
@files = map {
if(-d $_){
deldir($_,$timeLimit);
}else{
my @infos = stat "$_";
if(($now-$infos[8])>$timeLimit){
print "Delete file $_\n";
unlink($_);
}else{
print "[FILE] $_(".($now-$infos[8]).")\n";
}
}
}@files;
my @infos = stat "$dirtodel";
if(($now-$infos[8])>$timeLimit){
print "Delete directory $dirtodel\n";
rmdir($dirtodel);
}else{
print "[DIR] $dirtodel(".($now-$infos[8]).")\n";
}
}