- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Win2000 バッチファイルについて)
Win2000バッチファイルでのエラーと解決方法
このQ&Aのポイント
- Win2000の環境でバッチファイルがうまく動作しない現象が発生しています。エラーメッセージとして「FIND:パラメータ書式が間違います」と表示されます。同様の現象は他のバージョンのWindowsでは発生していません。
- 「^|」の「^」を除去しても問題が解消しないようです。
- このバッチファイルは、バッチファイルが存在する領域の使用容量を算出するためのものです。一時ファイルの生成は利用せず、Findコマンドのみを使用する前提で作られています。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
Windows2000のforにはバグがあります。 for /f の括弧の中でコマンドを実行する際に、日本語のバイト数を数え間違えます。 for /F "tokens=3" %%s in ('dir /s/-c ^| find "個のファイル"') do Set s=%%s のように日本語が6文字の場合、 for /F "tokens=3" %%s in ('dir /s/-c ^| find "個のファイル"123456') do Set s=%%s と、後に余分な半角文字を6文字つけてやる。 まあ、現実的には、下記のように一旦ファイルに入れてください。 dir /s/-c | find "個のファイル" > tmpfile for /F "tokens=3" %%s in (tmpfile) do Set s=%%s
その他の回答 (1)
- Cupper-2
- ベストアンサー率29% (1342/4565)
回答No.1
自分もよく知りませんが、2003・2008のFINDコマンドの仕様が違うとかありませんか。 find /? とでもして、コマンドの詳細を確認されてはいかがでしょう。 … 自分、サーバーOSは使わないんですよ。
質問者
お礼
FINDの仕様が同じです、原因はバグです...全然知りませんでした、ありがとうございます。
お礼
ちょっと調べてみたら確かにバグですね。 下記のコマンドを実行してみました、結果はOKです。 FOR /F "TOKENS=3 DELIMS=" %%J IN ('DIR /S/-C ^| FIND "個のファイル"123456') DO SET NUM1=%%J これよりやっぱ一時ファイルの生成はやり易いですね、助かりました。 ありがとうございます。