Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @echo off
- setlocal EnableExtensions DisableDelayedExpansion
- rem // Define constants here:
- set "_ROOT=%~dp0." & rem // (common root directory; `%~dp0.` is script's parent, `.` is current)
- set "_DIR1=%_ROOT%Directory1" & rem // (1st directory containing files)
- set "_DIR2=%_ROOT%Directory2" & rem // (2nd directory containing files)
- set _MASKS="*INV*." "*SLS*." & rem // (list of quoted file masks)
- set "_TMP1=%TEMP%%~n0_1_%RANDOM%.tmp" & rem // (1st temporary file)
- set "_TMP2=%TEMP%%~n0_2_%RANDOM%.tmp" & rem // (2nd temporary file)
- rem // Resolve 1st directory to be an absolute path:
- for %%E in ("%_DIR1%") do set "RDIR1=%%~fE"
- rem // Resolve 2nd directory to be an absolute path:
- for %%E in ("%_DIR2%") do set "RDIR2=%%~fE"
- rem // Write all matching files in 1st directory to 1st temporary file:
- pushd "%RDIR1%" && (
- for %%F in (%_MASKS%) do (
- echo(%%~nxF
- )
- popd
- ) > "%_TMP1%"
- rem // Write all matching files in 2nd directory to 2nd temporary file:
- pushd "%RDIR2%" && (
- for %%F in (%_MASKS%) do (
- echo(%%~nxF
- )
- popd
- ) > "%_TMP2%"
- rem // Loop over all common files from both temporary files:
- for /F %%L in ('findstr /L /I /X /G:"%_TMP1%" "%_TMP2%"') do (
- rem // Build absolute `wmic`-compatible file paths:
- set "FILE1=%RDIR1:=\%\%%L" & set "FILE2=%RDIR2:=\%\%%L"
- setlocal EnableDelayedExpansion
- rem set "FILE1=%!FILE1:&=&!" & set "FILE2=%!FILE2:&=&!"
- rem // Get standardised file date/time (last modification) of 1st file by `wmic`:
- for /F %%K in ('wmic DataFile where "Name='!FILE1!'" get LastModified') do set "DATE1=%%K"
- rem // Get standardised file date/time (last modification) of 2nd file by `wmic`:
- for /F %%K in ('wmic DataFile where "Name='!FILE2!'" get LastModified') do set "DATE2=%%K"
- rem // Compare file dates/times (last mod.) of both files and return differing ones:
- @echo on
- if !DATE1! gtr !DATE2! echo "!FILE1:\=!" is newer than "!FILE2:\=!"
- if !DATE1! lss !DATE2! echo "!FILE1:\=!" is older than "!FILE2:\=!"
- if !DATE1! equ !DATE2! echo "!FILE1:\=!" is same with "!FILE2:\=!"
- endlocal
- )
- rem // Clean up temporary files:
- del "%_TMP1%" "%_TMP2%"
- endlocal
- exit /B
- Microsoft Windows [Version 6.1.7601]
- Copyright (c) 2009 Microsoft Corporation. All rights reserved.
- C:Usersksaycon>cd Desktop
- C:UsersksayconDesktop>sample.bat
- "C:UsersksayconDesktopDirectory1FFPDFINV06" is same with "C:Usersksaycon
- DesktopDirectory2FFPDFINV06"
- C:UsersksayconDesktop>(
- rem // Build absolute `wmic`-compatible file paths:
- set "FILE1=C:\Users\ksaycon\Desktop\Directory1\FFPDFSLS02" & set "FILE2=
- C:\Users\ksaycon\Desktop\Directory2\FFPDFSLS02"
- setlocal EnableDelayedExpansion
- rem set "FILE1=&=&!" & set "FILE2=&=&!"
- rem // Get standardised file date/time (last modification) of 1st file by `wmic
- `:
- for /F %K in ('wmic DataFile where "Name='!FILE1!'" get LastModified') do set "
- DATE1=%K"
- rem // Get standardised file date/time (last modification) of 2nd file by `wmic
- `:
- for /F %K in ('wmic DataFile where "Name='!FILE2!'" get LastModified') do set "
- DATE2=%K"
- rem // Compare file dates/times (last mod.) of both files and return differing
- ones:
- if !DATE1! GTR !DATE2! echo "!FILE1:\=!" is newer than "!FILE2:\=!"
- if !DATE1! LSS !DATE2! echo "!FILE1:\=!" is older than "!FILE2:\=!"
- if !DATE1! EQU !DATE2! echo "!FILE1:\=!" is same with "!FILE2:\=!"
- endlocal
- )
- C:UsersksayconDesktop>set "DATE1=LastModified"
- C:UsersksayconDesktop>set "DATE1=20190318040549.218407+480"
- " UsersksayconDesktop>set "DATE1=
- C:UsersksayconDesktop>set "DATE2=LastModified"
- C:UsersksayconDesktop>set "DATE2=20190318095134.760320+480"
- " UsersksayconDesktop>set "DATE2=
- "C:UsersksayconDesktopDirectory1FFPDFSLS02" is same with "C:Usersksaycon
- DesktopDirectory2FFPDFSLS02"
- C:UsersksayconDesktop>rem // Clean up temporary files:
- C:UsersksayconDesktop>del "C:UsersksayconAppDataLocalTempsample_1_13650
- .tmp" "C:UsersksayconAppDataLocalTempsample_2_27021.tmp"
- C:UsersksayconDesktop>endlocal
- C:UsersksayconDesktop>exit /B
- C:UsersksayconDesktop>^A
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement