ターゲットが存在しない場合にバッチスクリプトでエラーメッセージを作成する方法は?


2

特定のターゲットを選択するようにプログラムできるバッチスクリプトテンプレートを作成しましたが、ターゲットがエンドユーザーマシンにまだ存在しない場合は、スクリプトがカスタムエラーダイアログスローするようにします。

現在のスクリプトは次のとおりです。

set targetfilepath=%TARGETPATH%
%SYSTEMROOT%\explorer.exe /select, "%TARGETFILEPATH%"

これをスクリプトに組み込むことはできますか?その場合、どこに配置すればよいですか?:

IF NOT EXIST goto net send localhost "%MESSAGETXT%"

を使用IF EXISTして、パスまたはファイルが既に存在するかどうかをテストし、そこから続行できます。
LPChip

SuperUserは「スクリプトを書いてください」という種類のサービスではありません。IFとCMDをグーグルで検索すると、たくさんの例が見つかります。小さなエラーについては、より完全なスクリプトを使用して質問を編集してください。
LPChip

この質問は特定のスクリプトを要求するため、トピック外としてこの質問を終了することに投票しています。
オーバーマインド

回答:


1

また、エラーメッセージにはよりクリーンなダイアログを使用したいと思います。このようなメソッドをバッチスクリプトに組み込むことはできますか?

はい、以下に示す例のように、wscriptを使用してバッチスクリプトでmsgboxを実行できます。またエラーメッセージにクリーンなダイアログを使用する」ことを示したため、変数を設定してバッチスクリプトを再度開始するために一番上の行を使用しましたが、バッチウィンドウが目立たないようにするオプションを使用しました。使用しない場合は、一番上の行を削除するだけです。/MIN

バッチスクリプト

変数の値を設定してくださいSET TARGETPATH=SET msgboxTitle=と、SET msgboxBody=それに応じて、ニーズのために。

IF NOT DEFINED MINIMIZED SET MINIMIZED=1 && START "" /MIN "%~dpnx0" %* && EXIT

SET TARGETPATH=C:\Users\User\Desktop\Test
IF NOT EXIST "%TARGETPATH%" GOTO :ERROR
%SYSTEMROOT%\EXPLORER /SELECT, "%TARGETPATH%"
GOTO :END

:ERROR
SET msgboxTitle=This is my Message Title
SET msgboxBody=This is my Message Body
SET tmpmsgbox=%temp%\~tmpmsgbox.vbs
IF EXIST "%tmpmsgbox%" DEL /F /Q "%tmpmsgbox%"
ECHO msgbox "%msgboxBody%",0,"%msgboxTitle%">"%tmpmsgbox%"
WSCRIPT "%tmpmsgbox%"

:END

さらなるリソース


優秀な!これは非常にうまく機能し、既存のスクリプトに簡単に追加できます。ありがとうございました。
メンデリ氏17

4
set MESSAGETXT = "テキストはここに行きます"
TARGETPATH = "Your Path Goes Here"を設定します
「%TARGETPATH%」GOTOエラーが存在しない場合
%SYSTEMROOT%\ explorer.exe / select、 "%TARGETFILEPATH%"
GOTO END
:エラー
メッセージ「ユーザー名」「%MESSAGETXT%」
:終わり

あなたはほとんど持っていました。SS64は、バッチプログラミングに関してはあなたの友人です。また、一般的なコマンドラインの使用法:サイトは次のとおりです。 私は彼らと提携していません。

編集:うわー、私はそこにいくつかの悪い仮定をし、それをテスト/見ずにコードを追加しました。Windows 7にはnet sendもうありませんが、msg代わりに使用します。回答を更新しましたが、システムで動作します。PAUSEキーを押して削除するまでコマンドラインを表示したい場合は、最後にコマンドを追加できます。


ありがとう!私はサイトが存在することを知りませんでした。これからバッチスクリプトに関する情報を頻繁に入手することを知っています。ただし、スクリプトを試してみましたが、うまくいかないようです。一時停止する必要がありますか?
メンデリ氏17

1

残念ながら、@ Blergが提供するスクリプトは動作しませんでした(私にとって)。Stack Overflowに挑戦してこのスレッドを見つけ、@ Blergのスクリプトと連携して使用しました。スクリプトは、一緒に投げたこのスクリプトを使用してエラーメッセージをスローできるようになりました。

IF NOT EXIST "%TARGETPATH%" GOTO ERROR
%SYSTEMROOT%\explorer.exe /select, "%TARGETPATH%"
GOTO END
:ERROR
START CMD /C "ECHO The target could not be located because it does not exist! && PAUSE"
:END

(私がしなければならなかったのは、5行目を置き換えることでした。)

これは機能しますが、このVBSスクリプトが作成できるように、エラーメッセージに対してよりクリーンなダイアログを使用したいと思います。

x=msgbox("%WINDOWTEXT%" ,0, "%WINDOWTITLE%")

このような方法をバッチスクリプトに組み込むことはできますか、またはバッチスクリプトを視覚的な基本スクリプトに変換する必要がありますか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.