簡體   English   中英

批量 - FTP刪除早於的文件夾

[英]Batch - FTP delete folders older than

我家里有兩個攝像頭,幾乎每天都會創建圖像。 他們將它們保存到我的FTP服務器(Fritz.Box \\ Nas驅動器)。

文件夾結構如下:

+-2016-08-24
+-+Subfolder
+----+AnotherSubfolder
+-------+File.jpg
+-2016-08-25
+-+Subfolder
+----+AnotherSubfolder
+-------+File.jpg
+-2016-08-26
+-+Subfolder
+----+AnotherSubfolder
+-------+File.jpg
...

現在我可以通過批處理文件(在Windows上)登錄我的FTP,如下所示:

echo user foo>ftpcmd.txt
echo 1234>>ftpcmd.txt
... CODE HERE ...
echo quit>>ftpcmd.txt
ftp -n -s:ftpcmd.txt foo.com

在Windows上,我會刪除2天的本地文件

forfiles /d -2 ...

在FTP上它將無法正常工作。 那么,如何刪除超過2天的文件夾和SUBFOLDERS / SUBFILES?

我知道這個問題: 在超過x天的FTP上批量刪除文件

但我無法為我找到一個好的解決方案。 再次,我想要一個批處理文件,檢查文件夾(例如:2016-08-24)與日期 - 2天,並刪除它們和他們的子目錄和子目錄。

希望這不是垃圾郵件問題,因為還有另一個問題,幾乎一樣。

問候
短劍

ftp.exe不支持此功能。 您必須運行ftp.exe一次才能獲得文件夾列表。 然后,您必須編寫一些非常精美的批處理腳本來處理列表,選擇舊文件夾,並生成臨時刪除腳本。 然后你會發現ftp.exe不支持遞歸刪除。

如果你想沒有任何第三方依賴,你將有更多的運氣與PowerShell(和FtpWebRequest類)。 雖然它仍然很難實現(再次沒有本地支持遞歸刪除)。


但是,使用WinSCP FTP客戶端很容易,如果文件夾的修改時間戳與其名稱相匹配。

您可以像這樣使用批處理文件( .bat ):

winscp.com /ini=nul /log=ftp.log /command ^
    "open ftp://username:password@ftp.example.com/" ^
    "rm /remote/path/*<2D" ^
    "exit"

參考文獻:


如果你只需要依賴文件名,那就更棘手了。

雖然您可以輕松編寫腳本來刪除2天的文件夾:

您可以使用這樣的批處理文件:

winscp.com /ini=nul /log=ftp.log /command ^
    "open ftp://username:password@ftp.example.com/" ^
    "rm /remote/path/%%TIMESTAMP-2D#yyyy-mm-dd%%" ^
    "exit"

如果您計划每天運行腳本 ,那么您將有效地僅保留最近兩天的文件夾。

參考: %TIMESTAMP%語法


WinSCP不需要安裝 使批處理工作所需的只是從批處理文件中提取WinSCP可移植可執行程序包的內容。


(我是WinSCP的作者)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM