web-dev-qa-db-ja.com

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

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

これが私の現在のスクリプトです:

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

これをスクリプトに組み込むことはできますか?もしそうなら、どこに置くべきですか?:

IF NOT EXIST goto net send localhost "%MESSAGETXT%"
2
Mr. Mendelli

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

はい、以下に示す例のように、 wscript を使用してバッチスクリプトで msgbox を実行できます。 「エラーメッセージにクリーンなダイアログを使用する」ことも指定したので、一番上の行を使用して変数を設定し、 start バッチスクリプトを使用しました繰り返しますが、/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

その他のリソース

1
Pimp Juice IT
set MESSAGETXT = "Your Text Goes Here" 
 set TARGETPATH = "Your Path Goes Here" 
 IF NOT EXIST "%TARGETPATH%" GOTO ERROR 
%SYSTEMROOT%\ Explorer.exe/select、 "%TARGETFILEPATH%" 
 GOTO END 
:ERROR 
 msg "Username" "%MESSAGETXT%" 
:END 

あなたはほとんどそれを持っていました。 SS64は、バッチプログラミングに関してはあなたの友達です。そして、一般的なコマンドラインの使用法も: ここに彼らのサイトがあります。 私は彼らとは関係がありません。

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

4
Blerg

残念ながら、 @ Blerg によって提供されたスクリプトは機能しませんでした*(私にとって)。Stack Overflow に挑戦し、 this thread を見つけて、@ 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%")

そのようなメソッドをバッチスクリプトに組み込むことはできますか、それともバッチスクリプトをビジュアルベーシックスクリプトに変換する必要がありますか?

1
Mr. Mendelli