
a.logというテキストの値を、一行づつ取り出して、ある値より大きいかの判定を行いたいのですがうまくいきません。
イメージ的には下記のような感じです。
FOR /F "eol=; tokens=3 delims=, " %%j in (C:\PerfLogs\memory_02071801.csv) do (
set MEMORY=%%j
set MEMORY=%MEMORY:~1,6%
rem 値が20000がより大きい場合はエラーメッセージを表示する。
if %MEMORY% GTR 20000 net send %COMPUTERNAME% %ERRTXT%
)
・memory_02071801.csvの内容
"02/07/2007 18:34:36.075""150836"
"02/07/2007 18:34:51.093""151020"
"02/07/2007 18:35:06.110""151252"
"02/07/2007 18:35:21.128""151360"
上記ではうまく動いてくれません。
もしわかる方いらっしゃったら教えていただけませんでしょうか。
No.1ベストアンサー
- 回答日時:
環境変数の参照%MEMORY%は、バッチの実行前に展開されてしまいます。
こういうケースでは遅延展開という方法を使います。
おまじないとして、最初に
setlocal EnableDelayedExpansion
と書いておいて、
%MEMORY% を !MEMORY! に変えればできると思います。
質問文のケースでは、
setlocal EnableDelayedExpansion
FOR /F "eol=; tokens=3 delims=, " %%j in (C:\PerfLogs\memory_02071801.csv) do (
set MEMORY=%%j
set MEMORY=!MEMORY:~1,6!
rem 値が20000がより大きい場合はエラーメッセージを表示する。
if !MEMORY! GTR 20000 net send %COMPUTERNAME% %ERRTXT%
)
とすればいけるのではないでしょうか。
参考URL:http://www.fpcu.jp/dosvcmd/bbs/log/cat3/for_in_d …
ham_kamoさんありがとう御座います。
上記の指摘どおりに変更したところ正常に稼動してくれました。
次回に生かしたいと思います。
話は変わってしまうのですが、
FOR文にて読み込んでいる(C:\PerfLogs\memory_02071801.csv)が
他のプロセスにて使用されているときにアクセスする事は可能でしょうか。
実はWindows既存のパフォーマンスのカウンタログで、メモリー状況を出力させて、
バッチにて一定間隔で監視させる設定を行いたいのですが難しいですかね・・・。
何かオプションで回避できるものがあればいいのですが・・。
No.3
- 回答日時:
No.1です。
同じようにパフォーマンスログを出力させていろいろためしてみました。その結果、
cd \PerfLogs
Copy Test_02081714.csv MemoryLog.txt
で普通にコピーできました。なので、ワンクッション置いて、バッチの中でいったんコピーして、コピーしたファイルをFOR文で使用すればいいのではないでしょうか。
No.2
- 回答日時:
No.1です。
一部訂正。> 環境変数の参照%MEMORY%は、バッチの実行前に展開されてしまいます。
→構文解析時に展開されてしまいます。
の誤りでした。FOR文が実行される前に()の中が解析され、そこでMEMORYの値が確定してしまう、という意味です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) Windowsのバッチファイルについてご教示ください 5 2023/07/25 20:23
- 英語 北海道大学の問題です。 Lose your memory and you, as you, ceas 3 2023/05/04 21:55
- UNIX・Linux ノートPCでUSBから起動しない 6 2022/05/05 09:34
- 邦楽 柴山サリー blinding memoryの歌詞を教えてください 調べても出てきません 1 2022/07/27 17:27
- 一眼レフカメラ ニコンのワイアレストランスミッターの無線内蔵でカメラ内のデータをPCに送信するとめちゃくちゃ遅いです 2 2022/06/14 00:12
- その他(コンピューター・テクノロジー) PCの画面が動かなくやってしまいました…。。 5 2022/10/02 03:23
- 英語 英語の質問です The frequency with which the facts in the 3 2022/09/25 00:33
- R&B・ヒップホップ スキズの曲でピー音が入る曲全部知りたいです! 今のところBEWAREとBoxerとMaze of m 1 2023/03/19 23:51
- CPU・メモリ・マザーボード 買ったメモリがサポート表の中にないのですが大丈夫ですよね... 1 2022/09/20 09:22
- その他(スマートフォン・携帯電話・VR) スマホのスペックでROMを内部ストレージの意味で使ってる動画があったのですが、 3 2023/03/08 08:31
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コマンドの結果を変数に入れたい
-
DOSコマンドのforで空白行をス...
-
バッチファイルを実行後、終了...
-
バッチファイルを常に管理者権...
-
バッチ実行時にバッチのファイ...
-
バッチ実行を意図的に失敗させ...
-
WMICでリモートでバッチが実行...
-
windowsのbatファイルで「| の...
-
バッチファイルでPC情報を取得する
-
DHCP設定バッチnetshコマンドに...
-
実行結果を戻り値で取得したい
-
WinSCPがタスクスケジューラで...
-
batファイルを実行してコマンド...
-
Windows10のタスクスケジューラ...
-
FOR文ないでの判定処理
-
ログオンユーザを簡単に切り替え
-
リモートデスクトップの取り合...
-
今時、バッチファイルは古い?
-
oracleのimp-00002エラーについて
-
コマンドプロンプトで別ユーザ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Windows10のタスクスケジューラ...
-
リモートデスクトップの取り合...
-
バッチファイルを実行後、終了...
-
batファイルで、call使っても戻...
-
バッチ実行を意図的に失敗させ...
-
oracleのimp-00002エラーについて
-
コマンドの結果を変数に入れたい
-
DHCP設定バッチnetshコマンドに...
-
DOSコマンドのforで空白行をス...
-
バッチファイルでPC情報を取得する
-
batファイルを実行してコマンド...
-
バッチでEnterを認識させ...
-
バッチファイルを常に管理者権...
-
WMICでリモートでバッチが実行...
-
コマンドプロンプトで最新のフ...
-
バッチ実行時にバッチのファイ...
-
バッチプログラムについて(編...
-
bat実行中に引数1の内容を変更...
-
ログオンユーザを簡単に切り替え
-
実行結果を戻り値で取得したい
おすすめ情報