@echo off robocopy C:\Test D:\test\ file.xlsx /S /B /ZB /R:4 /A-:H /W:10 /tee /LOG:"d:\%date:~7,2%%date:~4,2%%date:~10,4%.xlsx"
МАЙ работа для вас. Это зависит от формата даты.
%date:~7,2%
означает «взять строку с датой, с 7-го символа (считая от„символа 0“) для 2-х символов, например. Это будет работать для Wed 01/14/2014
формата производства 14012014.
Что было бы для ваших формат даты - а вы должны сказать нам, что это такое И вы должны знать, что это возможно, чтобы иметь пробелы вместо ведущих нулей, что является дополнительным осложнением
echo %date%
будет.. показать дату. Выберите подстроки оттуда. Возможно, вам понадобится использовать фиктивную переменную, если вы используете подавление нулевого нуля.
set "dummy=%date: =0"
echo %dummy%
или вам может понадобиться обработать дату в более сложной форме - все зависит от даты-формате.
БЕСЕДОВАТЬ форматы, вы можете предпочесть, чтобы произвести ваши имена, как yyyymmdd.xlsx
потому что таким образом нет никакой двусмысленности (это DDMMYY или ммддгга - местная конвенция меняется), и это означает, что алфавитный сортировать по имени является chronlogical сортировать по названию ,
Есть сотни статей о SO о датах обработки в партии, к которым вы можете обратиться.
Argh. Понимаю. robocopy
ориентирован на массовое копирование так переименовывать-назначения-файл, как представляется, не-включен (я не люблю того, чтобы сказать U:
означает U:\
как исходного каталога - U:
qould мне кажется, значит U:.
)
абы как, вот возможность:
@ECHO Off
SETLOCAL
SET "sourcedir=U:"
SET "destdir=U:\destdir"
SET "sourcefile=firelast.xtx"
SET "logfile=u:\logtest1.txt"
robocopy "%sourcedir%" "%destdir%\%date:~0,2%%date:~3,2%%date:~6,4%" "%sourcefile%" /B /ZB /R:4 /A-:H /W:10 /tee /LOG:"%logfile%"
MOVE "%destdir%\%date:~0,2%%date:~3,2%%date:~6,4%\%sourcefile%" "%destdir%\%date:~0,2%%date:~3,2%%date:~6,4%.xlsx"
RD "%destdir%\%date:~0,2%%date:~3,2%%date:~6,4%"
GOTO :EOF
Вы должны были бы изменить установку sourcedir
и т.д. в соответствии с вашими обстоятельствами. Я использовал настройки в соответствии с моей системой.
Я также использую просто dd/mm/yyyy
как мой формат даты, поэтому мои настройки подстроки, вероятно, будут отличаться от ваших.
Я удалил /s
из robocopy
вариантов, поскольку он, как представляется, не служит цели здесь.
По существу, это создает новый подкаталог в точке назначения naed (date), затем moves
файл для нового имени в целевом каталоге и делит созданный каталог (дата).
Если вы не хотите, чтобы все протоколировании болтовни, то простой copy
с назначением именем файлом, построенным по той же формуле, вероятно, будет лучше (ИМХО, в любом случае ...)
Привет мистер Магу, в качестве Например, я хочу, чтобы сохраненный файл был как filename13012014.xlsx, а не только filename.xlsx. Тот, который вы показали, сохраняет журнал как xlsx, но я не хочу, чтобы журнал я только хотел сохранить файл с датой в конце файла так что он не будет перезаписывать существующий файл на диске d. – Luap
Привет, мистер Маго, приведенный выше код создал этот путь, и папка пуста. D: \ Tu 0 \ 13. Я не знаю, что произошло. – Luap
Как я уже неоднократно указывал, обработка '% date%' зависит от формата даты ** ВАШ **. Я не знаю, какой ** ВАШ ** формат даты, но я бы сделал вывод, что это 'Tue 01/13/2015'. В этом случае вам нужно изменить дату гимнастики с '% date: ~ 0,2 %% date: ~ 3,2 %% date: ~ 6,4%' to '% date: ~ 7,2 %% date : ~ 4,2 %% дата: ~ 10,4% 'где бы он ни появлялся. – Magoo