- ベストアンサー
ファイルのコピー
xcopy コマンドを用いて c:\work フォルダ内に data_backup.1,data_backup.2,~data_backup.31 と data_backup.日付 のファイルがあります これを d:\keep フォルダに本日のファイルのみをコピーする 例 03/11/28の場合、data_backup.28 バッチファイルを教えてください
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
Win2000と同じ表示形式でした。 SP6aであれば問題ないはずです。 ***<<1桁日のdata_backupファイルの拡張子が1桁で作成される場合>>*** for /f "tokens=3 delims=/ " %%i in ('date /t') do set DAY=%%i if "%DAY:~0,1%" EQU "0" copy /v c:\work\data_backup.%DAY:~1,1% d:\keep&&goto :eof copy /v c:\work\data_backup.%DAY% d:\keep ***<<1桁日のdata_backupファイルの拡張子が2桁で作成される場合(01等)>>*** for /f "tokens=3 delims=/ " %%i in ('date /t') do set DAY=%%i copy /v c:\work\data_backup.%DAY% d:\keep これで実行してみてください。 バッチ自体は1桁日の時の状態によってどちらか一報で問題ありません。 問題があった場合、又質問してください。
その他の回答 (3)
- ken__t
- ベストアンサー率41% (53/129)
サービスパックは何を適用されていますか? もしSP3(かなり古いですが)の場合、('date /t')から正しく日付が取得できません。 ※2バイト文字がある場合、for文が誤動作してしまいます。 NTの環境が最近まであったのですが、今はなくなってしまったのでコマンドプロンプトで "date /t"の結果がどのように返されるか確認していただけますか? 宜しくお願いいたします。
- ken__t
- ベストアンサー率41% (53/129)
ファイルのみのコピーでしたらxcopyでなくてcopyコマンドで大丈夫です。 OSが分からないので2000環境で動くサンプルを回答いたします。 for /f "tokens=3 delims=/ " %%i in ('date /t') do set DAY=%%i if "%DAY:~0,1%" EQU "0" copy /v c:\work\data_backup.%DAY:~1,1% d:\keep&&goto :eof c:\work\data_backup.%DAY% d:\keep ※copyコマンドの/vはベリファイオプションです。念のため、コピー元とコピー先で比較を行わせる為です。 これでいけると思います。
お礼
ありがとうございます ご説明不足で申し訳御座いません OS:Windows NT server 4.0 です お手数でござますが、再度ご教示の程よろしくお願いいたします
- taka_tetsu
- ベストアンサー率65% (1020/1553)
サンプルを作れるほど時間は無いのでヒントだけ。 OSは何でしょう?NT、2000、XPでしたら、forを使うことで、ファイル中の文字列の一部を環境変数に取り込むことが出来ます。 9x系でしたらWindows標準のコマンドでは無理です。 NT系という前提で、処理の流れは、 1.dateコマンドの結果をファイルにリダイレクト 2.forを使って1のファイルから年、月、日を取得して環境変数にセット。 3.取得した年月日をパラメータにしてxcopyを実行 となります。
お礼
早速のご回答有難う御座います (1)Windouws NT server 4.0 sp6 (2)date /t → 2003/11/29 土 以上です。よろしくお願いいたします