2015-03-05 2 views
-1

Я сделал простой Win Serv 2008 резервного копирования R2 скрипт (в addtion для встроенного)Простой Windows Server 2008 Резервное копирование сценария

wbadmin start backup -backupTarget:\\winee\vhds\backup\ -allcritical -systemState -include:c: -quiet 
for /f "tokens=1* delims=" %%a in ('date /T') do set datestr=%%a 
mkdir C:\backup\%datestr% 
XCOPY "Z:\backup\" "C:\backup\%datestr%" 

Говоря простыми словами - я хочу, чтобы скопировать все папки и файлы внутри Z: \ резервного копирования (отображается диск - он равен \ winee \ VHDs \ резервного копирования в другую папку с именем автоматически текущей датой только последняя часть не работает -..?., что говорит Incorrent путь что я должен изменить

с наилучшими пожеланиями

ответ

1

Результат команды date /T содержат зарезервированные символы, ср. Naming Files, Paths, and Namespaces

< (less than) 
> (greater than) 
: (colon) 
" (double quote) 
/(forward slash) 
\ (backslash) 
| (vertical bar or pipe) 
? (question mark) 
* (asterisk) 

Например, если ваша дата содержит / (прямой слэш), например, это replace с _ (нижняя линия, подчеркивание) следующим образом.

for /f "tokens=1* delims=" %%a in ('date /T') do set "datestr=%%a" 
set "datestr=%datestr:/=_%" 
    rem add next line, cf. **edit** 
set "datestr=%datestr: =%" 
mkdir "C:\backup\%datestr%" 

(Примечание и соблюдать надлежащее расстояние и " котировку). В this resource: mkdir вам следует избегать использования следующих символов в именах папок: © ® " - & '^() и @, поскольку они, как известно, вызывают проблемы.

Редактировать По вашему запросу space вы правы. Я не видел и даже не подозревал об этом до сих пор, извините. Сравните следующий (чистый CLI) вывод:

==>for /f "tokens=1* delims=" %a in ('date /T') do @echo [%a] 
[06.03.2015 ] 

==>for /f "tokens=1" %a in ('date /T') do @echo [%a] 
[06.03.2015] 

==>echo [%date%] 
[06.03.2015] 

==> 

Таким образом, добавить set "datestr=%datestr: =%" или, вместо

for /f "tokens=1* delims=" %%a in ('date /T') do set "datestr=%%a" 
set "datestr=%datestr:/=_%" 
set "datestr=%datestr: =%" 

просто использовать просто

"datestr=%date:/=_%" 

На самом деле, я не знаю вашего locale%date% формат; он может потерпеть неудачу с mar 6, 2015 и ...

+0

У меня все еще есть ошибка. Я думаю, проблема в SET. Он создает папку с датой вроде: «2015-03-06» - с пространством. – snap171