• ベストアンサー
  • すぐに回答を!

Win2000 バッチファイルについて

  • 質問No.7525900
  • 閲覧数185
  • ありがとう数2
  • 回答数2

お礼率 50% (2/4)

こんにちは、
Win2000の環境で下記のバッチがうまく動作できません、”FIND:パラメータ書式が間違います”というエラーが出ています、ほかの2003,2008ではそういう現象が出ていません。

なぜでしょうか?
そこの”^|”の”^”を消したとしても無理のようです。

■簡単にバッチファイルが存在する領域の使用容量を算出するバッチファイルです。(一時ファイルの生成は利用しない、Findコマンドだけを使うという前提で)

ソース:

@echo off

for /F "tokens=3" %%s in ('dir /s/-c ^| find "個のファイル"') do Set s=%%s

echo %s%

分かって頂ければご教授ください。
誠にありがとうございます~~。

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

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

ベストアンサー率 48% (4515/9391)

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
お礼コメント
qsharp

お礼率 50% (2/4)

ちょっと調べてみたら確かにバグですね。
下記のコマンドを実行してみました、結果はOKです。

FOR /F "TOKENS=3 DELIMS=" %%J IN ('DIR /S/-C ^| FIND "個のファイル"123456') DO SET NUM1=%%J

これよりやっぱ一時ファイルの生成はやり易いですね、助かりました。
ありがとうございます。
投稿日時:2012/06/11 10:58

その他の回答 (全1件)

  • 回答No.1

ベストアンサー率 29% (1342/4565)

自分もよく知りませんが、2003・2008のFINDコマンドの仕様が違うとかありませんか。

  find /?

とでもして、コマンドの詳細を確認されてはいかがでしょう。


自分、サーバーOSは使わないんですよ。
お礼コメント
qsharp

お礼率 50% (2/4)

FINDの仕様が同じです、原因はバグです...全然知りませんでした、ありがとうございます。
投稿日時:2012/06/11 10:59
関連するQ&A

その他の関連するQ&Aをキーワードで探す

ピックアップ

ページ先頭へ