
DOSコマンドで、あるソフト(タスク)が実行されていればプログラムAを、そうでなければプログラムBを実行するバッチを組んでいます。タスクの一覧はtasklistで取得できることが分かり、対象となるタスクおみを抽出する方法も分かりました。しかし、この後どうすれば良いかが分かりません。対象となるタスクが存在した場合としない場合では出力される文字列が違います。この文字列を比較することで分岐が実現できると思ったのですが、それには文字列を変数に格納する必要があります。以下のように記述し、うまくいくことを期待したのですが、駄目でした。
set STATUS=tasklist /fi "Imagename eq タスク名"
tasklist /fi "Imagename eq タスク名"の部分が関数であれば、戻り値があってそれを格納することができるのではないかと思ったのですが、できませんでした。このケースに限ったことではありませんが、各コマンドの実行結果として出力される文字列を変数に格納するにはどうすれば良いのでしょうか?VBSやWSHなどではなく、.bat形式の場合でお願いします。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
No.1です。
先の回答はクソの役にも立たぬ駄文でした;
tasklistの出力から、どうしても改行を除くことが出来ず、まともに動くバッチを作成出来ませんでした。
混乱を招き、大変申し訳なく思っております。
以下に、少しはましなバッチを考えましたので、ご参考になれば幸いです。
@echo off
tasklist /fi "imagename eq daemon.exe" /nh >d:\temp.txt
find "daemon.exe" <d:\temp.txt >NUL
if errorlevel 1 goto shori1
if errorlevel 0 goto shori0
:shori1
notepad
goto end
:shori0
taskmgr
:end
del d:\temp.txt
DAEMON Toolsが実行中だとタスクマネージャが、されていなければメモ帳が開きます。
ただ、変数に格納するという方法は見出せませんでした…
No.2
- 回答日時:
No.1です。
>リダイレクトでテキストに格納するのはどうやるのでしょうか?
tasklist /fi "Imagename eq タスク名" >STATUS.txt
>:出力先へ書き出し
>>:出力先へ追加書き出し
<:入力先から読み込み
となります。
先の回答も、もっとスマートに出来るかも知れませんが、とりあえず;
No.1
- 回答日時:
出力される文字列をリダイレクトでテキストに格納し、さらにサブルーチンに呼び出すというのは如何でしょうか?
例
出力される文字列をSTATUS.txtにリダイレクトしたとして、
copy /b temp1.txt+STATUS.txt+temp2.txt temp.bat
call temp.bat
del temp.bat
temp1.txtの内容:IF
temp2.txtの内容: ==(判定文字列) コマンド
要するに、最終的に実行したいステートメントをテキストで生成しておけばいけると思うのですが。
この回答への補足
アドバイスありがとうございます。
それでうまくいけそうな気がします。
更に質問になってしまいますが、リダイレクトでテキストに格納するのはどうやるのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- UNIX・Linux bashでブランク(空白)を検索文字列として指定する方法 1 2022/04/13 22:29
- Visual Basic(VBA) 以下のVBAで該当文字列の前後に付与したい。 例 前に付与 abc ユーザーID 12345 後に付 3 2022/04/19 21:50
- その他(プログラミング・Web制作) プログラミング pythonの問題について 2 2022/04/19 00:41
- Excel(エクセル) エクセルで2つの表を比較して、文字列が同じだが、その行のある値が違うものを抽出したい 1 2022/10/06 21:48
- Visual Basic(VBA) batにて、異なるフォルダの同名ファイルを参照し、文字列を判別。擬似配列で変数へ格納 3 2022/04/10 03:37
- Java Java 南京錠 2 2023/02/04 11:46
- Excel(エクセル) PowerQueryに詳しい方教えてください(Office365) 1 2022/07/24 21:11
- C言語・C++・C# C#の問題です。 文字列型の配列 s[100] にキーボードから入力された100文字以内の文字列(単 2 2022/06/22 15:18
- Excel(エクセル) マクロだと数式が表示される 2 2022/09/10 14:48
- PHP カラーミーショップのSmartyでの文字列抜き出し 2 2022/05/06 11:51
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
echoの出力の最後のスペースを...
-
xcopyで特定のファイルのみをコ...
-
【VBA】テキストファイルから特...
-
コマンドにてテキストファイル...
-
Linux(raspberry pi)でのcpコマ...
-
【DOSコマンド】for の デリミ...
-
コマンドプロンプトで相対パス...
-
bat処理の実行結果ログ出力方法...
-
リダイレクト >> を複数のファ...
-
PIFファイルにつきまして
-
ワードのテキストボックスの中...
-
コマンドプロンプトでFTPでエラー
-
バッチコマンドの「set」で入力...
-
NULLの置き換えについて
-
DOSコマンドで結果として出力さ...
-
UNIX ファイル存在チェックの方法
-
apple scriptファイル名の一部...
-
エクセルのセルに設定したハイ...
-
バッチファイルのfor文の使い方...
-
フォルダに入っているファイル...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
xcopyで特定のファイルのみをコ...
-
echoの出力の最後のスペースを...
-
echo "abc" >> test.txt で、先...
-
【VBA】テキストファイルから特...
-
コマンドプロンプトで相対パス...
-
リダイレクト >> を複数のファ...
-
コマンドプロンプトで標準エラ...
-
バッチファイル 指定行の切り出し
-
コマンド実行結果を環境変数に...
-
コマンドにてテキストファイル...
-
バッチファイルのfor文を使って...
-
バッチファイル 現在のフォルダ...
-
NULLの置き換えについて
-
FTPのバッチファイルで日付を引...
-
バッチファイルで改行の出力
-
.txtって、縦書きにはならない...
-
複数のテキストファイルをひと...
-
ワードのテキストボックスの中...
-
複数テキストファイル連結につ...
-
【DOSコマンド】for の デリミ...
おすすめ情報