• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:バッチファイル Windows2000 コマンド)

Windows2000バッチファイルの実行エラー:ファイルが見つかりません

このQ&Aのポイント
  • Windows2000 SP4環境で実行すると、バッチファイルが正常に動作せず、ファイルが見つからないエラーが発生します。
  • バッチファイルは、Cドライブ直下の【test_201012??.xls】に一致するファイルを探し、変数【$FILE】に格納してから、コピー処理を行います。
  • Windows2000環境では、FOR構文やDIRコマンドに制限がある可能性があります。また、ワイルドカードの制限も考慮する必要があります。別の方法を探し、問題の解決を図りたいです。

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

  • ベストアンサー
回答No.4

#3の補足について。藁かもしれませんが。 COPY C:\test_201012??.xls /B D:\test\OK.xls /Bを付加してしてみてください。バイナリ転送となりテキストの終端コードがあってもサイズ分コピーされるはずです。

その他の回答 (3)

  • pita-gora
  • ベストアンサー率70% (102/145)
回答No.3

はじめはNo.1さんの回答と同じく /B が抜けているのかと思いましたが、Windows2000ということで可能性としてありえるのが、for文のバグです。 beckfloydさんが例示しているバッチの括弧内 'DIR C:\test_201012??.xls /B' のところのファイル名等、実際のバッチと変えていませんか?さらに本当のバッチには漢字やひらがななどの2バイト系の文字が入っていませんか? 以下のページをご参照ください。 Windows2000 のコマンドプロンプトでは in ('  ') の中で2バイト文字を使うとその文字数だけコマンドの後が削られるようです。 http://fpcu.on.coocan.jp/dosvcmd/bbs/log/cat3/for_in_do/4-0138.html http://fpcu.on.coocan.jp/dosvcmd/bbs/log/cat3/for_in_do/3-0471.html もしtest_201012??.xlsに一致するファイルが1つしかないのなら、for分は省略して、 COPY C:\test_201012??.xls D:\test\OK.xls だけでもいいのではないかと思います。

beckfloyd
質問者

補足

pita-gora さん ご回答ありがとうございます。 以下回答致します。 >beckfloydさんが例示しているバッチの括弧内 'DIR C:\test_201012??.xls /B' のところのファイ>ル名等、実際のバッチと変えていませんか?さらに本当のバッチには漢字やひらがななどの2バイト系 >の文字が入っていませんか? はい、全角文字が1~2文字入っております。 半角文字で質問してしまって申し訳ございません。 >もしtest_201012??.xlsに一致するファイルが1つしかないのなら、for分は省略して、 >COPY C:\test_201012??.xls D:\test\OK.xls 最初実施致しました。 しかしながら、80KBあったサイズが1KBでコピーされるという現象が発生しました。 ※ちなみに【*】で実施しても結果は同じでした。  尚、XPでは【?】【*】はOKでした。 原因不明なので、他の方法で実施しようとして今回のような問題にいきつきました。 宜しくお願い致します。

  • 0909union
  • ベストアンサー率39% (325/818)
回答No.2

なぜにそのようにしたのか不明です。 普通 IF文を使ったり、Copyコマンドでも、同じようにワイルドカードを使ってコピーするだけすむはずですが? http://itpro.nikkeibp.co.jp/free/NT/WinKeyWord/20040805/1/copy.shtml Copyのオプションで/Yで非対話モードになり、エラーを表示させたくなければ > NUL or > NUL 2>&1 とすれば表示されません。確か2000でも If 文(exist)とcopyでワイルドカード(* ?)が機能したと思いますが? これらは、DOSの基本操作です。 OKファイルが存在すれば、コピー元があり成功したと言う事です。 これ以外にも、find, findstrがありますが。目的のことはcopy文1行ですみます

回答No.1

確かに上記のコードであればWindows2000SP4でも動作しました。 ちょっと意地悪して、DIRコマンドの「/B」を削除したら上記の結果のようになりました。 きちんとコーディングされているか(機能しているか)確認してみてはいかがでしょうか。

関連するQ&A