我正在撰寫一個批處理檔案來比較網路驅動器上兩個檔案夾的內容。一個宏每天晚上都會生成一個新檔案夾,我想看看今天和昨天之間發生了什么變化。例如,如果昨天的檔案夾名為“B”,今天的檔案夾名為“A”,它們的結構如下所示:
- Home
- A
- file1.txt
- file2.txt
- file4.txt
- B
- file1.txt
- file2.txt
- file3.txt
我想看到類似的東西
A: file4.txt added
A: file3.txt removed
但是輸出的格式在一天結束時并不重要。我只需要查看檔案夾內容的比較。
到目前為止我所擁有的
使用我有限的批處理知識,我將這個當前不起作用的解決方案拼湊在一起:
@ECHO OFF
setlocal EnableDelayedExpansion
pushd "\\domain\path\to\Home"
set "j=0"
set "count=2"
:: get the names of the two most recently added folders
FOR /f "delims=" %%i IN ('dir /AD-H /B /O-D') DO (
set /A j=j 1
if !j! equ 1 (
:: send contents of newest folder to file
dir !i! /B > newest_folder.txt
)
if !j! equ 2 (
:: send contents of second-newest folder to file
dir !i! /B > older_folder.txt
)
if !j! geq !count! (
:: break after two folders
goto :end
)
)
:end
fc newest_folder.txt oldest_folder.txt
PAUSE
我在這里看到了類似的解決方案:
(for %%i in ("folder2\*") do if exist "folder1\%%~nxi" echo(%%~i)>file.csv
但在我的情況下它不起作用,因為檔案夾名稱每天都在變化。
任何幫助,將不勝感激!
uj5u.com熱心網友回復:
@ECHO OFF
setlocal EnableDelayedExpansion
set "later="
set "earlier="
pushd "\\domain\path\to\Home"
:: get the names of the two most recently added folders
FOR /f "delims=" %%i IN ('dir /AD-H /B /O-D') DO (
if defined later set "earlier=%%i"&goto report
set "later=%%i"
)
:report
if defined earlier (
dir /b "
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/491631.html
標籤:批处理文件 windows-10
