Согласитесь с @ jeb по всем пунктам, однако может возникнуть другая проблема. В зависимости от вашей локали, результат %time%
может содержать начальный пробел, если текущее время раньше 10 часов утра. Если это так, целевой путь в вашей команде COPY
разделяется, поскольку он не заключен в двойные кавычки. В результате команда становится синтаксически неправильной.
Итак, если вы исправите все проблемы, упомянутые до сих пор, ваш скрипт должен работать без проблем. По крайней мере, упрощенная версия вашего сценария работала на меня. Вот как я это проверил:
Сначала я создал простую настройку на своем компьютере:
MKDIR C:\tests\source
MKDIR C:\tests\target
затем скопировал несколько случайных файлов среднего размера в папку C:\tests\source
и запустил следующий скрипт:
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
FOR /R "C:\tests\source" %%f IN (*) DO (
SET a=!time::=!
SET a=!a:,=!
COPY /Y "%%f" "\!a!"
)
И вот что появилось в C:\tests\target
в результате:
_1395459
_1395470
_1395639
Я должен указать, что _
на самом деле является пробелом, потому что на моем компьютере результат %time%
действительно содержит ведущий пробел в этот час, который находится между полуночью и 10 часами утра в этой части мира. Во всяком случае, моя главная мысль в том, что сценарий, который я выложил выше (который, я подчеркиваю, в основном такой же, как ваш), работал для меня.