2014-02-11 26 views
0

我在批處理編程一個完整的新手,但發現在這裏一些偉大的劇本,我試圖修改。我需要在目錄中修改的最後一個文件的信息。下面的腳本給我一個關於文件名和修改時間的信息的文件。它也搜索子目錄,但似乎卡在子目錄中,而不是在父目錄中找到較新的文件。我不知道什麼是錯的(因爲我只是部分理解了代碼)。你在這裏的聰明人的任何建議?查找最新的文件目錄中的

在此先感謝!

@echo off 

setlocal 

set srcDir=C:\Test 

set lastmod= 

pushd "%srcDir%" 

for /f "tokens=*" %%a in ('dir *. * /b /od /s /a-d 2^>NUL') do set lastmod=%%a 

if "%lastmod%"=="" echo Could not locate files.&goto :eof 

for /d %%a in ("%lastmod%") do echo "%lastmod%", Modified date: %%~ta>"C:\Test\Details.txt" 
+1

你想要它在子目錄中搜索嗎? –

回答

1

這使用robocopy所以它只能在Windows Vista和更高版本上工作。爲了在XP上運行,您需要從後面的操作系統或資源工具包中獲得robocopy的副本。

沒有複製操作纔會真正進行,但是它會使得檢索與可以排序找到最新的文件的文件adequated郵票遞歸文件列表。

@echo off 
    setlocal enableextensions disabledelayedexpansion 

    set "folder=%cd%" 

    for /f "tokens=2,*" %%a in (
     'robocopy "%folder%" "%folder%" "*" /s /is /nocopy /nc /ns /ts /fp /np /ndl /njh /njs /xjd /r:0 /w:0 /l ^| sort /r ' 
    ) do (set "latest=%%b" & goto :done) 
    :done 

    for %%f in ("%latest%") do echo(%%~tf %%~ff 
+0

感謝您的回覆!是的,它也應該包括子目錄。我嘗試填寫目錄,但無法使其工作。我得到的錯誤消息是'sort:打開失敗:/ r:沒有這樣的文件或目錄'。我是否應該在某處填寫目錄或者/ r開關是否錯誤? – user3297825

+0

@ user3297825,它包含子目錄(請參閱robocopy的'/ s'開關)。排序命令不讀取任何文件。它要做的是讀取和排序('/ r'開關)來自robocopy通過管道('^ |')的數據。因爲它適用於當前目錄和下面的目錄。 –

+0

+1這真是太棒了。 Robocopy在該過程中使用「UTC時間」,併爲您「排序日期」。整個樹可以被處理的事實使得它可能非常有用。 – foxidrive

相關問題