MC ND的解決方案非常聰明。但是當我嘗試使用「。」作爲文件掩碼時,我得到了錯誤的結果。原因是robocopy
列出了來自的源文件夾和(虛擬)目標文件夾的相應文件,在這種情況下爲%TEMP%
。您可以通過將/xx
開關添加到robocopy
來解決該問題,或者只使用空目標文件夾。由於我不是100%確定/xx
開關將始終工作,我訴諸指定目標文件夾(希望不存在)的隨機名稱。
原始代碼的第二個缺點是FOR
循環將不必要地執行,直到可以任意長的文件列表的末尾。
下面的代碼修復的目標文件夾的問題,得到的結果後快捷鍵循環,此外,出口雙雙文件名,並在樹中最年輕的文件的時間戳:
@echo off
setlocal
set "srcpath=%~1"
if not DEFINED srcpath set srcpath=%CD%
set /A skip=%2 - 1
set opt=
if DEFINED skip if %skip%0 GTR 0 set "opt=skip=%skip%"
set MASK=*.manifest.*
for /f "%opt% tokens=1,2*" %%a in ('
robocopy "%srcpath%" %RANDOM%_%RANDOM% %MASK% /l /s /ts /njh /njs /ndl /nc /ns ^| sort /r
') do set "tstamp=%%a %%b" & set "youngestfile=%%c" & goto :ex
:ex
echo %youngestfile% %tstamp%
腳本現在可以接受2個參數。第一個參數是源文件夾,如果省略,則默認爲當前文件夾。第二個參數是數字,允許搜索第n個最小的文件。因此,例如「lastfile.2」會返回以當前文件夾爲根的樹中的第二個最年輕的文件。這是FOR
循環從最上面的文件開始的最小文件的副作用。
太棒了。我不認爲我會想用'robocopy'來列出文件。非常感謝! –