-1

バッチスクリプトが苦手です。誰かがこれで私を助けてくれることを願っています。

私の問題は、毎日私のプログラムが日付の付いたフォルダーを作成することです。仕事を行う自動化された毎日のバックアップスクリプトが必要です。現在の日付または昨日の日付で新しく作成されたフォルダーのみをコピーしてrarし、他のディレクトリに送信し、残りのファイルとサブディレクトリはそのままにします。ところで、マイ プログラムは現在の日付に従ってフォルダ名を作成します。

ここにサンプルがあります

source todays date: february 26 20013
C:\MyApp\20130226 <new folder
        \20130225 <old folder
        \20130224 <old folder


destination todays date: february 26 20013
D:\Backup\20130226.rar << newly backup according to current date.

これは可能ですか?前もって感謝します

4

1 に答える 1

0

バッチ ファイル内の日付の処理は、厄介で扱いにくいことで有名です。

基本的には、次の 2 つの方法があります。

  1. それを使用%DATE%して適切な部分にカットします。たとえば、私にとっては次のようになります。

    > echo %DATE%
    2013-02-26
    
    > echo %DATE:~0,4%%DATE:~5,2%%DATE:~8,2%
    20130226
    

    これには、現在のロケールの日付形式に依存するという問題があります。ご覧のとおり、私は ISO-8601 (唯一の正しい日付形式の私見) を使用しているため、これはかなり簡単です。

    明確に定義された環境で使用し、堅牢性の実際の要件がない 1 回限りのスクリプトには十分に機能します。私はそれを避ける傾向がありますが。

  2. WMI を使用して現在の日付を取得します。

    > wmic os get localdatetime
    LocalDateTime
    20130226113553.324000+060
    

    その出力を次の変数に格納できますfor /f

    for /f "skip=1" %%x in ('wmic os get localdatetime') do if not defined MyDate set MyDate=%%x
    

    その形式は固定されているため、部分文字列を使用して個々の部分に安全にアクセスできます。

    echo %MyDate:~0,8%
    

実際のファイルのコピーは演習として残しておきます。

于 2013-02-26T10:40:38.437 に答える