2012-02-14 3 views
0

Я создал ниже пакетный файл, но не успел.Как создать пакетный файл для копирования файлов в общую папку с полным доступом, затем регистрирует все результаты и ошибки в файле?

@ECHO OFF 

@ECHO "Backup process started." 

@SET TARGET_FILES = "\\pc1\temp\*.mdb" 
@ECHO "TARGET_FILES:%TARGET_FILES%" 

@SET DESTINATION_FOLDER = "\\pc1\temp\Backups" 
@ECHO "DESTINATION_FOLDER:%DESTINATION_FOLDER%" 

@SET BACKUP_FOLDER = "Backup%date:~10,4%%date:~4,2%%date:~7,2%" 
@ECHO "BACKUP_FOLDER:%BACKUP_FOLDER%" 

@SET FINAL_FOLDER = "%DESTINATION_FOLDER%\%BACKUP_FOLDER%" 
MKDIR %FINAL_FOLDER% 
@ECHO "DIRECTORY CREATED:%FINAL_FOLDER%" 

XCOPY %TARGET_FILES% %FINAL_FOLDER% >> %FINAL_FOLDER%\%BACKUP_FOLDER%.log 

@ECHO "Backup process ended successfully." 

@ECHO ON 

Окружающая среда: Это будет запланированная задача в C: \ Windows \ Задачи, использующие Windows XP SP3

ВЫВОД:

"Backup process started." 
"TARGET_FILES:" 
"DESTINATION_FOLDER:" 
"BACKUP_FOLDER:" 
The syntax of the command is incorrect. 
"DIRECTORY CREATED:" 
Invalid number of parameters 
"Backup process ended successfully." 

Любое наведение на правильном направлении ценится.

UPDATES1: Я заметил, что мои переменные не были установлены.

UPDATES2:

@ECHO OFF 
ECHO Backup process started. 

set TARGET_FILES=\\pc1\temp\*.mdb 
ECHO TARGET_FILES "%TARGET_FILES%" 

SET DESTINATION_FOLDER=\\pc1\temp\Backups 
ECHO DESTINATION_FOLDER "%DESTINATION_FOLDER%" 

SET BACKUP_FOLDER=Backup%date:~0,4%%date:~5,2%%date:~8,2% 
ECHO BACKUP_FOLDER "%BACKUP_FOLDER%" 

SET FINAL_FOLDER=%DESTINATION_FOLDER%\%BACKUP_FOLDER% 
MKDIR "%FINAL_FOLDER%" 
ECHO DIRECTORY CREATED "%FINAL_FOLDER%" 

XCOPY "%TARGET_FILES%" "%FINAL_FOLDER%" >> "%FINAL_FOLDER%\%BACKUP_FOLDER%.log" 

ECHO Backup process ended successfully. 

@ECHO ON 

ВЫХОД ДЛЯ UPDATES2:

Backup process started. 
TARGET_FILES "\\pc1\temp\*.mdb" 
DESTINATION_FOLDER "\\pc1\temp\Backups" 
BACKUP_FOLDER "Backup20120214" 
DIRECTORY CREATED "\\pc1\temp\Backups\Backup20120214" 
Backup process ended successfully. 

LOG

\\pc1\temp\file1.mdb 
\\pc1\temp\file1_be.mdb 
2 File(s) copied 

С новым кодом (UPDATES2), Я успешно скопировал все файлы mdb в целевую папку , но все мои эхо-сообщения не были зарегистрированы. Как включить все мои эхо-сообщения для регистрации?

ответ

2

Я думаю, что нужно добавить

**cd /d %~dp0\** 

("% ~ DP0" может заменить каталог среды выполнения полного пути командного файла)

в первой строке ..

кд/д% ~ DP0 означает дд кд /: \ currentfolder

ОБНОВЛЕНИЕ:

Хорошо, я думаю, вы просто хотите скопировать свои файлы с A на B.

Я создаю образец для вас, основываясь на вашем коде.

Моя папка находится в

D:\Run 
│ main.bat >> the copy batch 
│ 
└─Test 
    │ new.txt 
    │ 
    └─Backups 
     └─20120214   >> created new folder 

main.bat является

@ECHO OFF 

cd /d %~dp0\ 

ECHO Backup process started. 

SET TARGET_FILES="Test\*.txt" 
ECHO TARGET_FILES:%TARGET_FILES% 


SET DESTINATION_FOLDER=Test\Backups\%date:/=% 
ECHO DESTINATION_FOLDER:%DESTINATION_FOLDER% 

SET FINAL_FOLDER=%DESTINATION_FOLDER% 
ECHO FINAL_FOLDER:%FINAL_FOLDER% 
MD "%FINAL_FOLDER%" 
ECHO "DIRECTORY CREATED:%FINAL_FOLDER% 

XCOPY %TARGET_FILES% %FINAL_FOLDER% 

ECHO Backup process ended successfully. 

@ECHO ON 

я надеюсь, что это поможет вам.

+0

Я ценю, но извините, я не могу этого понять. не могли бы вы его уточнить? – eros

+0

Большое спасибо. Дополнительно для журналов я создал другой командный файл только для выполнения командного файла. 'batchfile.bat >>% LOG_FULL_PATH%' – eros