У меня есть несколько папок, содержащих активы (в каждой папке есть подпапки, содержащие эти активы .mp3, .txt, .png и т. Д.). Я хочу скопировать все эти активы вместе с подпапкой в одно место / папку. Мне удалось успешно запустить команду robocopy для копирования ресурсов вместе с подпапками из одной папки в другую:
цель / с источника robocopy
Я буду запускать планировщик один раз в день для копирования ресурсов. Также я хотел сохранить имена всех скопированных ресурсов в файле журнала. Имя файла журнала должно быть в виде
log_currentDate.txt
например, если сегодняшняя дата - 20 октября 2015 года ... имя файла журнала должно быть:
log_20151020.txt
На следующий день, т.е. 21 октября 2015 г., должно быть:
log_20151021.txt
Этот файл журнала должен содержать имена всех скопированных ресурсов 20 октября 2015 года, 21 октября 2015 года и так далее. Я создал пакетную команду (спасибо @DavidPostill) для создания следующего журнала:
@echo off
for /f "tokens=1-3 delims=/ " %%a in ('date /t') do (
set _date=%%a%%b%%c
)
echo robocopy source target /log:D:\ABC\log%_date%.txt
Это создает журнал с именем «logTue2010.txt» (т.е. в формате logdayddmm). Проблема:
Исходная цель robocopy /log:D:\ABC\logWed1021.txt / tee / s
РЕДАКТИРОВАТЬ: Согласно @JosefZ я отредактировал свой командный файл следующим образом:
@echo off
for /f "tokens=2 delims==" %%G in ('wmic OS get LocalDateTime /value') do set "_date=%%G"
set "_date="%_date:~0,8%
echo robocopy source target /log:D:\ABC\log\log_%_date%.txt
robocopy source target /log:D:\ABC\log\log_%_date%.txt /S
Я получил следующий вывод:
D:\ABC>D:\ABC\copy1.bat
robocopy source target /log:D:\ABC\log\log_.txt
Log File : D:\ABC\log\log_.txt
Получить YYYYMMDD
-форматированная дата независимо от локали и региональных настроек с использованием for /F
петля против wmic
(Команда инструментария управления Windows) и подстрока переменной окружения:
@echo off
for /f "tokens=2 delims==" %%G in ('wmic OS get LocalDateTime /value') do set "_date=%%G"
set "_date=%_date:~0,8%"
Есть еще robocopy
параметры ведения журнала:
/L : List only - don’t copy, timestamp or delete any files. /NP : No Progress - don’t display % copied. /unicode : Display the status output as Unicode text. # /LOG:file : Output status to LOG file (overwrite existing log). /UNILOG:file : Output status to Unicode Log file (overwrite) /LOG+:file : Output status to LOG file (append to existing log). /UNILOG+:file : Output status to Unicode Log file (append) /TS : Include Source file Time Stamps in the output. /FP : Include Full Pathname of files in the output. /NS : No Size - don’t log file sizes. /NC : No Class - don’t log file classes. /NFL : No File List - don’t log file names. /NDL : No Directory List - don’t log directory names. /TEE : Output to console window, as well as the log file. /NJH : No Job Header. /NJS : No Job Summary.
robocopy B Bcopy /log:D:\ABC\log\log_%_date%.txt /S /NP /NDL /NJH /NJS /NS /NC
Команда выше (примечание /NP /NDL /NJH /NJS /NS /NC
переключатели) подавит почти все, кроме (полных) имен файлов в robocopy
вывод. Однако имена файлов имеют отступ Вкладка и Космос персонажи. Следующий фрагмент кода должен вывести нужный результат:
>D:\ABC\log\log_%_date%.txt (
for /f "tokens=*" %%G in ('
robocopy B Bcopy /S /NP /NDL /NJH /NJS /NS /NC
') do echo(%%G
)
Для >
объяснение, см. перенаправление. И файл журнала сохраняется в указанной папке (D:\ABC\log\
); чтобы убедиться в этом, попробуйте
type D:\ABC\log\log_%_date%.txt