質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

コマンドプロンプト

コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

バッチファイル

バッチファイル(Batch File)は、Windowsのコマンドラインインタープリターによって複数のコマンドを実行させる事が出来るスクリプトファイルです。

Q&A

解決済

1回答

5363閲覧

batファイルが実行できない

w_DMC

総合スコア1

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

コマンドプロンプト

コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

バッチファイル

バッチファイル(Batch File)は、Windowsのコマンドラインインタープリターによって複数のコマンドを実行させる事が出来るスクリプトファイルです。

0グッド

0クリップ

投稿2021/11/11 09:34

編集2021/11/11 10:12

動作確認環境

Windows10

前提・実現したいこと

WEBサイトの死活監視を行いたいと考えています。

1.batファイルがサイトの状況を確認 返ってきた値が200なのか404かを確認
2.batファイル内にif構文で200以外が返ってこれば、powershellファイルを起動
3.gmailで、スマホに通知を送る。

以下、今後実装予定(今回は気にしないでください。)
4.batファイルを5分置きに実行

発生している問題・エラーメッセージ

上記の内容でコマンドプロンプト上に、コマンドを直接打ち込む(貼り付ける)と、
想定どおりの動きをしますが、
いざbat形式にして、これをダブルクリックし実行すると、
cmdのウインドウが一瞬だけ表示されて、すぐ消えてしまいます。

なお、あえて公開していないアドレスを指定し、404が返ってくる状態にしているので、
メール通知が飛ぶようになっています。

該当のソースコード

for /f "usebackq" %d in (curl -s -I -o nul -w "%{http_code}" http://172.16.X.XX:XXXX/APP_XXXXX_X_XXXX/page/login.jsp) do set A=%d
if %A% neq 200 powershell -NoProfile -ExecutionPolicy Unrestricted C:\Dcheck.ps1

試したこと

●「SMB 1.0/CIFSクライアント」を有効にする。

備考

batファイル自体を作るのが初めてでして、色々手探りで作成している最中です。
死活監視のアプリを別途導入したい所ですが、
社内端末で導入が難しい環境の為、
batファイルとpowershellで何とかできないかなと考え、
構築に至りました。

そもそも初歩的なミスがあるように思いますが、
3時間程悩んでもなぜ動かないかわかりませんでした。

お手数ですがご助言いただけないでしょうか。

【コメントいただいた解決策】⇒実行可確認済

%→%%へ修正
【旧】
for /f "usebackq" %d in (curl -s -I -o nul -w "%{http_code}" http://172.16.X.XX:XXXX/APP_XXXXX_X_XXXX/page/login.jsp) do set A=%d
if %A% neq 200 powershell -NoProfile -ExecutionPolicy Unrestricted C:\Dcheck.ps1

【新】
for /f "usebackq" %%d in (curl -s -I -o nul -w "%%{http_code}" http://172.16.X.XX:XXXX/APP_XXXXX_X_XXXX/page/login.jsp) do set %A=%%d
if %%A%% neq 200 powershell -NoProfile -ExecutionPolicy Unrestricted C:\Dcheck.ps1

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

変数には % を付けて表しますが、これはバッチファイルでは %% と書く必要が有ります。

投稿2021/11/11 09:46

SaitoAtsushi

総合スコア5444

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

w_DMC

2021/11/11 10:07

回答ありがとうございます。動きました! 解決方法に記載させていただきます。
w_DMC

2021/11/11 10:10

自己解決でないので、編集追記にします、本当にありがとうございました。
SaitoAtsushi

2022/03/22 15:25

バッチファイル内では % のかわりに %% とするべきというのは for コマンドのヘルプに書かれています。 for /? または help for とコマンド入力して出てくるメッセージを参照してください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問