Próbuję napisać plik bat który będzie porównywał czasy ostatniej edycji plików o tych samych nazwach znajdujących się w różnych folderach - ...\plik1 i ...\rgb\plik1
Jeżeli plik1 nie istnieje - brak operacji
Jeżeli plik1 istnieje - sprawdza czy jest \rgb\plik1 i porównuje ich czasy edycji.
Jeżeli plik1 jest nowszy, lub nie ma \rgb\plik1 wykonuję się operacja.
I tak dla wszystkich plików w folderze z batem.
Mam problemy z odczytem czasu plików. Nie ma problemu z DATE1, ale nie wiem jak pobrać skutecznie DATE2 wrzucam w przykładzie oba podejścia(jedno w komentarzu). Nie mam pojęcia jak poprawnie operować zmiennymi i jak je oznaczać znakami % lub ! i kiedy umieszczać w " ". Drugim problemem jest nie aktualizowanie się zmiennych w poszczególnych krokach pętli(tu pewnie chodzi o ! zamiast %, ale każda próba ich użycia kończyła się błędem składni). Dorzucam wynik z konsoli dla 2 plików (TXL07.tif TXL03.tif)
setlocal ENABLEDELAYEDEXPANSION
set FOLD=%~dp0RGB\
md %FOLD% for %%j in (%~dp0*.tif) do (
if not exist %%j goto END
if exist %~dp0RGB\%%~nxj (
rem set PLIK=%~dp0RGB\%%~nxj
rem "DATE1=%%~tPLIK
for %%i in (%~dp0RGB\%%~nxj) do set "DATE2=%%~ti"
set "DATE1=%%~tj"
set DATE3=%DATE1:~0,4%%DATE1:~5,2%%DATE1:~8,2%%DATE1:~11,2%%DATE1:~14,2%
set DATE4=%DATE2:~0,4%%DATE2:~5,2%%DATE2:~8,2%%DATE2:~11,2%%DATE2:~14,2%
echo %DATE3%
echo %DATE4% IF "%DATE3%" GTR "%DATE4%" echo %PACZ% -T -S 256 -E -C j -Q 5 -K a -a "%%j" "%~dp0RGB\%%~nxj" )
else echo %PACZ% -T -S 256 -E -C j -Q 5 -K a -a "%%j" "%~dp0RGB\%%~nxj" )
:END
endlocal
pause
Wynik konsoli:
D:\CMD>konwertujrgb
D:\CMD>SETLOCAL ENABLEDELAYEDEXPANSION
D:\CMD>ECHO KONWERTUJE PLIKI TIF Z FOLDERU DO RGB
KONWERTUJE PLIKI TIF Z FOLDERU DO RGB
D:\CMD>IF EXIST "C:\PROGRA~1\ISRU\bin\mr_file.exe" (SET PACZ="C:\PROGRA~1\ISRU\b
in\mr_file.exe" ) ELSE IF EXIST "C:\PROGRA~2\ISRU\bin\mr_file.exe" (SET PACZ="C
:\PROGRA~2\ISRU\bin\mr_file.exe" ) ELSE (ECHO BRAK PLIKU mr_file.exe )
D:\CMD>SET FOLD=D:\CMD\RGB\
D:\CMD>MD D:\CMD\RGB\
Podkatalog lub plik D:\CMD\RGB\ już istnieje.
D:\CMD>FOR %j in (D:\CMD\*.tif) do (
IF NOT EXIST %j GOTO END
IF EXIST D:\CMD\RGB\%~nxj (
SET PLIK=D:\CMD\RGB\%~nxj
SET "DATE1=%~tPLIK
rem FOR %i in (D:\CMD\RGB\%~nxj) do SET "DATE2=%~ti"
rem SET "DATE1=%~tj"
set DATE3=201707171236
set DATE4=201708310936
echo 201707171236
ECHO 201708310936
IF "201707171236" GTR "201708310936" echo "C:\PROGRA~2\ISRU\bin\mr_file.exe" -T
-S 256 -E -C j -Q 5 -K a -a "%j" "D:\CMD\RGB\%~nxj"
) ElSE echo "C:\PROGRA~2\ISRU\bin\mr_file.exe" -T -S 256 -E -C j -Q 5 -K a -a
"%j" "D:\CMD\RGB\%~nxj"
)
D:\CMD>(
IF NOT EXIST D:\CMD\TXL03.tif GOTO END
IF EXIST D:\CMD\RGB\TXL03.tif (
SET PLIK=D:\CMD\RGB\TXL03.tif
SET "DATE1=%~tPLIK
rem FOR %i in (D:\CMD\RGB\TXL03.tif) do SET "DATE2=%~ti"
rem SET "DATE1=2017-04-13 15:15"
set DATE3=201707171236
set DATE4=201708310936
echo 201707171236
ECHO 201708310936
IF "201707171236" GTR "201708310936" echo "C:\PROGRA~2\ISRU\bin\mr_file.exe" -T
-S 256 -E -C j -Q 5 -K a -a "D:\CMD\TXL03.tif" "D:\CMD\RGB\TXL03.tif"
) ElSE echo "C:\PROGRA~2\ISRU\bin\mr_file.exe" -T -S 256 -E -C j -Q 5 -K a -a
"D:\CMD\TXL03.tif" "D:\CMD\RGB\TXL03.tif"
)
201707171236
201708310936
D:\CMD>(
IF NOT EXIST D:\CMD\TXL07.tif GOTO END
IF EXIST D:\CMD\RGB\TXL07.tif (
SET PLIK=D:\CMD\RGB\TXL07.tif
SET "DATE1=%~tPLIK
rem FOR %i in (D:\CMD\RGB\TXL07.tif) do SET "DATE2=%~ti"
rem SET "DATE1=2017-04-13 15:15"
set DATE3=201707171236
set DATE4=201708310936
echo 201707171236
ECHO 201708310936
IF "201707171236" GTR "201708310936" echo "C:\PROGRA~2\ISRU\bin\mr_file.exe" -T
-S 256 -E -C j -Q 5 -K a -a "D:\CMD\TXL07.tif" "D:\CMD\RGB\TXL07.tif"
) ElSE echo "C:\PROGRA~2\ISRU\bin\mr_file.exe" -T -S 256 -E -C j -Q 5 -K a -a
"D:\CMD\TXL07.tif" "D:\CMD\RGB\TXL07.tif"
)
201707171236
201708310936
D:\CMD>ENDLOCAL
D:\CMD>pause