2015-01-13 5 views
0

Я пытаюсь автоматизировать копирование файла с диска c: на диск d, я сделал это, написав пакетный код и планируя его для запуска в планировщике задач. моя проблема заключается в том, что каждый раз моя партия запускает ее поверх записи существующего файла в диске d. Возможно ли сохранить старый файл и автоматическое имя нового файла с текущей датой. например, когда пакетный запуск файла .xlsx в c: \ test будет скопировать в d: \ test как файл13012014.xlsx.Пакетный файл Robocopy

@echo off robocopy C: \ Test D: \ test \ file.xlsx/S/B/ZB/R: 4/A-: H/W: 10/tee/LOG: "d: \ logtest1 .txt "

Благодарим вас заранее.

ответ

0
@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 с назначением именем файлом, построенным по той же формуле, вероятно, будет лучше (ИМХО, в любом случае ...)

+0

Привет мистер Магу, в качестве Например, я хочу, чтобы сохраненный файл был как filename13012014.xlsx, а не только filename.xlsx. Тот, который вы показали, сохраняет журнал как xlsx, но я не хочу, чтобы журнал я только хотел сохранить файл с датой в конце файла так что он не будет перезаписывать существующий файл на диске d. – Luap

+0

Привет, мистер Маго, приведенный выше код создал этот путь, и папка пуста. D: \ Tu 0 \ 13. Я не знаю, что произошло. – Luap

+0

Как я уже неоднократно указывал, обработка '% date%' зависит от формата даты ** ВАШ **. Я не знаю, какой ** ВАШ ** формат даты, но я бы сделал вывод, что это 'Tue 01/13/2015'. В этом случае вам нужно изменить дату гимнастики с '% date: ~ 0,2 %% date: ~ 3,2 %% date: ~ 6,4%' to '% date: ~ 7,2 %% date : ~ 4,2 %% дата: ~ 10,4% 'где бы он ни появлялся. – Magoo

Смежные вопросы