1 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 17:44:28 ] 拡張子が .cmd または .bat のバッチファイルのスクリプティング(プログラミング)に関わる 質問,テクニック(JScript,Perl等の埋め込みなど含む),関連情報のためのスレです。 ※何でも無理矢理バッチでやろうとせず、WSH等の使用も検討しましょう。 【前スレ】 (関連スレは>>2-5 ) 【.cmd】 バッチファイルスクリプト %1 【.bat】 pc11.2ch.net/test/read.cgi/tech/1178281991/
642 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 03:40:43 ] とりあえずヒント for /f "" %%A in (sample.txt) do ( set /a count=!count!+1 ) というかforの中にforでやってみたもののうまくいかない・・・orz for %%F in ("*.csv") do ( for /f "" %%L in ("%%F") do ( set /a count=!count!+1 ) )
643 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 05:47:45 ] >642 そう書くなら、まず usebackq が必要。 for /f には文字列も渡せるから、単にクォートするだけだと文字列を渡したことになってしまう。 あと、変数 count の初期化が必要。でないと set /a +1 と変な展開がされてしまい失敗する。 setlocal EnableDelayedExpansion for %%F in ("*.csv") do ( set count=0 for /f "usebackq" %%L in ("%%F") do ( set /a count=!count!+1 ) echo %%F: !count! lines )
644 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 10:20:54 ] apache ログ 集計 の検索結果 約 93,500 件中 1 - 100 件目 (0.46 秒) Apacheのログの集計なら皆がやってることだよね 自分で変なもの作るより普通の方法でやってみたら? まずはApacheスレで相談するのがいいと思う
645 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 12:16:00 ] >>643 全部書き込んだわけじゃないから・・・ 遅延変数オンにさせてない時点で気づいて・・・
646 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 12:39:43 ] set /a count = count + 1 set /a count += 1 なら、初期化いらず、遅延いらず。
647 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 13:51:23 ] >>646 そうなのか!!
648 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 15:06:42 ] usebackq って use backquote の略でバッククオートを使ってコマンド引数でシングルクオートを 文字列値の区切りとして使うためのもんだからバッククオート使わないのにusebackqって全然意味ない。 >>646 それやっても遅延も初期化もいるだろ。
649 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 18:55:29 ] >>648 いや、初期化されていない場合0になるよ。 set count= set /a count = 10 * count + 1 echo count = %count% set count= set /a count = 10 * %count% + 1 echo count = %count%
650 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 19:03:25 ] 通常だとダブルクォートは文字列扱い。 usebackqではダブルクォートはファイル名扱い。 変わるのはバッククォートだけでねえべ。
651 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 20:11:07 ] >>650 そうだけど、そもそもなんでバッククオートを使うかっていうとシングルクオートをコマンドではなく 文字列扱いとするためだろ。 シングルクオートもバッククオートも使わないのにusebackqにする意味がない。
652 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 20:16:08 ] >>649 最初のループはいいけど、2回目以降加算されてしまうじゃん。
653 名前:デフォルトの名無しさん [2008/05/03(土) 02:00:48 ] >>649 set /a count=0 set /a count = 10 * count + 1 echo count = %count% set /a count=0 set /a count = 10 * %count% + 1 echo count = %count%