• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Wiersz polecenia - odczyt dat edycji wielu plików z różnych folderów

Konferencja JOIN! 2018
0 głosów
53 wizyt
pytanie zadane 2 września 2017 w Inne języki przez Franczak_Piotr Nowicjusz (120 p.)

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

 

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
1 odpowiedź 105 wizyt
pytanie zadane 14 września 2017 w Offtop przez Hiskiel Pasjonat (17,060 p.)
0 głosów
0 odpowiedzi 204 wizyt
pytanie zadane 25 września 2017 w C i C++ przez B0nkers Początkujący (310 p.)
0 głosów
1 odpowiedź 334 wizyt
pytanie zadane 10 stycznia 2017 w Systemy operacyjne, programy przez Megatroon Nowicjusz (200 p.)
Porady nie od parady
Pytania na temat serwisu SPOJ należy zadawać z odpowiednią kategorią dotyczącą tej strony.SPOJ

55,375 zapytań

99,731 odpowiedzi

205,203 komentarzy

27,301 pasjonatów

Przeglądających: 275
Pasjonatów: 10 Gości: 265

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...