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 XP SP3を使用して、\ WINDOWS \タスク

OUTPUT:

"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:UPDATES2 FOR

@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 

OUTPUT:

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

は私が

..あなたがあなたの最初の行に

(バッチファイルのフルパスにランタイムディレクトリを置き換えることができます "%〜DP0")

**cd /d %~dp0\** 

を追加必要があると思います

CD/D%は〜DP0は意味CD/DD:\ currentfolder

UPDATE:

あなたはファイルをAからBにコピーしたいと思うと思います。

コードに基づいてサンプルを作成します。

マイフォルダが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 

ある

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

です。

+0

申し訳ありませんが、私はそれを理解できません。あなたはそれを詳述できますか? – eros

+0

ありがとうございました。追加ログでは、バッチファイルを実行するために別のバッチファイルを作成しました。 'batchfile.bat >>%LOG_FULL_PATH%' – eros

関連する問題