• ベストアンサー

ファイルのコピー

xcopy コマンドを用いて c:\work フォルダ内に  data_backup.1,data_backup.2,~data_backup.31 と data_backup.日付 のファイルがあります これを d:\keep フォルダに本日のファイルのみをコピーする  例 03/11/28の場合、data_backup.28 バッチファイルを教えてください

質問者が選んだベストアンサー

  • ベストアンサー
  • ken__t
  • ベストアンサー率41% (53/129)
回答No.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)
回答No.3

サービスパックは何を適用されていますか? もしSP3(かなり古いですが)の場合、('date /t')から正しく日付が取得できません。 ※2バイト文字がある場合、for文が誤動作してしまいます。 NTの環境が最近まであったのですが、今はなくなってしまったのでコマンドプロンプトで "date /t"の結果がどのように返されるか確認していただけますか? 宜しくお願いいたします。

nao0
質問者

お礼

早速のご回答有難う御座います  (1)Windouws NT server 4.0 sp6  (2)date /t → 2003/11/29 土 以上です。よろしくお願いいたします

  • ken__t
  • ベストアンサー率41% (53/129)
回答No.2

ファイルのみのコピーでしたら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はベリファイオプションです。念のため、コピー元とコピー先で比較を行わせる為です。 これでいけると思います。

nao0
質問者

お礼

ありがとうございます ご説明不足で申し訳御座いません  OS:Windows NT server 4.0 です  お手数でござますが、再度ご教示の程よろしくお願いいたします

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1

サンプルを作れるほど時間は無いのでヒントだけ。 OSは何でしょう?NT、2000、XPでしたら、forを使うことで、ファイル中の文字列の一部を環境変数に取り込むことが出来ます。 9x系でしたらWindows標準のコマンドでは無理です。 NT系という前提で、処理の流れは、 1.dateコマンドの結果をファイルにリダイレクト 2.forを使って1のファイルから年、月、日を取得して環境変数にセット。 3.取得した年月日をパラメータにしてxcopyを実行 となります。

関連するQ&A