Нужно получить время посл. изменения файла из заданной подпапки и сравнить его с временем одноимённого файла в текущей папке. Если файл в текущей папке новее, файл в подпапке заменяется им. Всё это делается в цикле
for
:
for %%x in (*.txt) do
С текущей папкой всё понятно:
%%~tx
. А вот как быть с вложенной папкой, я никак не пойму.
Нагуглил про существование модификатора
%~$Path:I
, а также про отложенное раскрытие переменных с помощью
!var!
. Всё вроде бы хорошо, но сочетание
set time2 = %%~t$dir:x
(где
$dir
- путь к нужной папке) выдаёт мне дату вместе с путём к файлу. А попытка обрезать строку в виде
!time2:~0,16!
приводит к тому, что...
time2=~0,16
!
Что с этим делать?
Полный код:
rem @echo off
setlocal enabledelayedexpansion
for %%x in (*.txt) do (
if not exist %2 md %2
set dir1=%cd%\%2
if not %%x==%1 (
if exist %2\%%x (
set time1 = %%~tx
set time2 = %%~t$dir1:x
set time2 = !time2:~0,16!
set time2
if time1 GTR time2 copy %%x %2
) else copy %%x %2
)
rem pause
if errorlevel 1 echo Ошибка копирования файла
)