0

すべての企業ファイルをバックアップするための単純なXCOPYルーチンを実行するスクリプトがあります。

@echo off
IF %time:~0,2% GTR 7 (
    IF %time:~0,2% LSS 21 (

    XCOPY "R:\Sage Src" "S:\lastdata" /D /Y /E /R /K /C /H /I >> S:\sageBackupLog-%date:~-4,4%-%date:~-7,2%-%date:~-10,2%-hour%time:~0,2%.txt

    XCOPY "R:\importantStuff" "V:\lastdata" /D /Y /E /R /K /C /H /I 
    EXIT /B 0
    )
)

しかし、すべてを2つのIFステートメントでラップして以来、時間は出力されなくなりました。

試しset %hour%=%time:~0,2%ましたが、機能せず、無効なパラメータエラーが返されます。

4

1 に答える 1

1

ここには2つの主な問題があります。

まず、setコマンドを次のように変更します: set hour=%time:~0,2%( -signsを含まhourない%

次に、9時のような1桁の時間値の時刻は、次のように出力されます。

" 9:00:00.00"

最初の桁の前に先頭のスペースがあります。ファイル名が次のように解決される可能性があるため、これがエラーメッセージの理由です。

sageBackupLog-2012-09-11-hour 9.txt

名前がで囲まれていないため、これは実際には2つのパラメーターを形成します"

これを克服し、これらの時間の先行ゼロを出力するにはset、文字列の置換を行う2番目のステートメントを使用して、スペースをゼロに変更します。

set hour=%time:~0,2%
set hour=%hour: =0%

%hour%その後、スクリプトの代わりに安全に使用でき%time:~0,2%ます。

お役に立てば幸いです。

于 2012-09-11T07:56:22.907 に答える