- ベストアンサー
Windows2000バッチファイルの実行エラー:ファイルが見つかりません
- Windows2000 SP4環境で実行すると、バッチファイルが正常に動作せず、ファイルが見つからないエラーが発生します。
- バッチファイルは、Cドライブ直下の【test_201012??.xls】に一致するファイルを探し、変数【$FILE】に格納してから、コピー処理を行います。
- Windows2000環境では、FOR構文やDIRコマンドに制限がある可能性があります。また、ワイルドカードの制限も考慮する必要があります。別の方法を探し、問題の解決を図りたいです。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
#3の補足について。藁かもしれませんが。 COPY C:\test_201012??.xls /B D:\test\OK.xls /Bを付加してしてみてください。バイナリ転送となりテキストの終端コードがあってもサイズ分コピーされるはずです。
その他の回答 (3)
- pita-gora
- ベストアンサー率70% (102/145)
はじめは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 だけでもいいのではないかと思います。
- 0909union
- ベストアンサー率39% (325/818)
なぜにそのようにしたのか不明です。 普通 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行ですみます
- いけだ ひろし(@ike-2000)
- ベストアンサー率53% (69/129)
確かに上記のコードであればWindows2000SP4でも動作しました。 ちょっと意地悪して、DIRコマンドの「/B」を削除したら上記の結果のようになりました。 きちんとコーディングされているか(機能しているか)確認してみてはいかがでしょうか。
補足
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でした。 原因不明なので、他の方法で実施しようとして今回のような問題にいきつきました。 宜しくお願い致します。