• ベストアンサー

wsh で関数を指定して実行したい

wsh について質問です。 cscript などを実行する際に 実行する関数を引数によって制御したいのですが、 そうするにはスクリプト内に引数で分岐して関数を呼び分けるコードを 記述するようなやりかたしかないのでしょうか? cscript(wscript) 自体には関数名を指定して それを実行する仕組みはないのでしょうか。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

VBScript/JScriptのEvalを使ってみてはどうでしょう ---- Sample.vbs Function Func1()   WScript.Echo "Func1" End Function Function Func2()   WScript.Echo "Func2" End Function Sub Main()   dim objargs   Set objArgs = WScript.Arguments   if objArgs.Count then     ' デバッグ中は on Erorをコメントアウトする     on error resume next     Eval objargs(0)   end if End Sub Call Main といったスクリプトを用意して cscript sample.vbs Func1 といった具合に実行します ただしEvalはVBScriptの Subプロシージャでは機能しません

kkkkkkk1
質問者

お礼

なるほど。 Eval を使用する方法は初めて知りました。 しかし、やっぱり引数を自力で処理しないといけないのですね。 ありがとうございました。

関連するQ&A

  • プログラム実行時に引数"<"を指定したい。

    自分でも色々調べたのですが、手に負えなかったので質問させていただきます。何度も質問する形になって申し訳ないです。 今取り組んでいる課題の1つに、プログラム実行時に引数として"<"と"ABC"(ABCはファイル名)を指定するとABCに書かれたスクリプトを実行する。というものがあります。 myprogram < scriptfile(←のような感じです) それで、第1引数が"<"なら第2引数のファイルを実行する。というようにしようと思ったのですが、Argv[1]に"<"が格納されません。 引数に"<"を指定すると別の処理をするらしいことは調べたのでわかったのですが、どうにか"<"を格納できないでしょうか?(つまりは、引数が"<"の時とそうでない時で分岐できるようにしたいのです) あと、スクリプトのファイル名もArgv[2]に格納できないんですが、第2引数に指定された文字列はどこへ行ってしまったんでしょうか? 何度もすいませんがよろしくお願いいたします。

  • HTMLにWSHを組み込む

    HTMLにWSHのコードを書く事は可能ですか? たとえば、ページ開くとNotePad.EXEが起動するようにしたいのですが 以下のような書き方をすると WScriptが宣言されていません。 とエラーになります。 <HTML> <HEAD> <TITLE>起動のテスト</TITLE> </HEAD> <meta http-equiv="Content-Script-Type" content="text/JavaScript"> <BODY> <SCRIPT LANGUAGE="JavaScript"> var title = "メモ帳"; var wsh = WScript.CreateObject("WScript.Shell"); wsh.Run( "NotePad.EXE" ); </SCRIPT> </BODY> </HTML> いい案がある方教えてください。

    • ベストアンサー
    • HTML
  • WSHで.RMIファイルを再生

    こんにちは。 OSはWIN2K SP-4,WSHは5.6を使用しています。 c:x.RMIファイルをWSHを利用して再生するには どのようなスクリプト(wscript)を記述すれば よろしいでしょうか? よろしくお願いいたします。

  • WSHプログラミングで、Shell実行プロセスが終了しない内に、次の処理が実行されちゃいます・・・

    WSH(WindowsScriptingHost)でプログラミングを行っております。 以下のように、「A.exe」実行後、「B.exe」を実行するようにスクリプトを記述しています。 ところが、実際に実行してみると、「A.exe」が終了しない内に、「B.exe」が実行されてしまっている様なのです。 しかし、プログラム処理上、「A.exe」が実行終了してからでないと、「B.exe」を実行するのはまずいのです。 WSHで、「A.exe」が実行終了するまで、「B.exe」を実行させないようなスクリプトの記述方法を教えて下さい。 Set Shell = CreateObject("WScript.Shell") Shell.Run "cmd.exe /c D:\A.exe" Shell.Run "cmd.exe /c D:\B.exe"

  • javascriptでのローカルパスの指定の仕方

    javascript(wsh)のローカルパスの記述で質問です いままでファイルを実行する場合に、こんな感じで記述してました。 var WSHShell = new ActiveXObject("WScript.Shell"); WshShell.run("C:\\wsh\\act\\kyoten1.js"); のように実行ファイルを直接指定していました。 今後、ファイルのフルパス名を取得して代入したいのです fullpath = WScript.ScriptFullName; WshShell.run(fullpath); → うまくいきません・・・ どのようにローカルのパス名を記述すればよいのでしょうか? 大変恐縮なのですが、お分かりの方ご教授いただけると幸いです。

  • WSH動作しない!!(WScript.SleepとSendKeys?)

    WSHが動作しなくて困っています。 動作するコードとしないコードは次のとおりです。 いずれも@ITに掲載されているサンプルコードをそのままです。 動作しないコードについても,notepadの起動まではできます。 どうやら,sleepとsendkeysが動いてくれないようです。 <正常に動作するコード> Set objShell = WScript.CreateObject("WScript.Shell") WScript.Echo "メモ帳を起動します。" objShell.Run "notepad.exe" http://www.atmarkit.co.jp/fwin2k/operation/wsh03/wsh03_02.html <動作しないコード> Set objShell = WScript.CreateObject("WScript.Shell") objShell.Run "notepad.exe" WScript.Sleep 1000 objShell.SendKeys "hello" http://www.atmarkit.co.jp/fwin2k/operation/wsh05/wsh05_04.html ■動作環境 Win XP Pro IE 6.0 ちなみに,WSHファイルに対する実行権限はあります(フルコントロールです)。 以上なのですが,何か点検するべき事項などありましたらご教示ください。

  • WSH createobjectで指定出来るアプリケーション

    CreateObjectで指定できるアプリケーションの指定方法について質問致します。 WSHでExcelオブジェクトを生成する場合、  set objxls = wscript.createobject("Excel.Application") や  set objxls = wscript.createobject(<対象exeのパス> などで指定しますが、 初めの表記で指定できるアプリケーション名はどうやって調べれば よいでしょうか? インストールしているアプリのオブジェクトを 初めの表記方法を使って生成したいと考えております。 よろしくお願い致します。

  • WSH(Windows Script Host)のデバックはどの様にするのですが。?

    WSH(Windows Script Host)をデバックしたいのでいろいろ調べて Micrsoft Script Debaggerをインストールしました。 そして、コマンドプロンプトでstop行入りのhoge.vbsに対して、 「cscript.exe //X C:\hoge.vbs」及び「wscript.exe //X C:\hoge.vbs」を 実効しましたがデバッガは起動しませんでした。 (Micrsoft Script Debaggerの単独起動は確認済み) 他の方法でも結構ですので、皆さんのWSH(Windows Script Host)のデバックの 仕方を教えて下さい。 では、宜しくお願いします。

  • Runasの指定について

    お世話になります、runasの使用時にパスの指定の仕方について教えてください。 以下のようにパスを指定し、Runas後にスクリプトを実行しようとしていますが、objexeccmdの部分で引っかかってしまい、先に進むことが出来ません。 お手数ですが、よろしくお願いいたします。 objExecCmd = \"runas /user:Bunseki \\\"cscript.exe \\\\server\\\\log.wsf\" \'実行パスを記入 Set WshShell = WScript.CreateObject(\"WScript.Shell\") WshShell.run objExecCmd, 1, true

  • wsh(vbs)のデバッグについて

    MSのScriptDebuggerをインストールした後に コマンドプロンプトからオプションの //D を付けてスクリプトをキックしたのですが、普通にスクリプトが実行されるだけでデバッガが起動してくれません。どの様にしたらデバッガが起動するのでしょうか。MSのScriptDebuggerのページ等を参照しても原因が分からず困っています。 よろしくお願いいたします。 実行したコマンド:cscript ×××.vbs //D です。 WSHのバージョンは5.6、インストールしたデバッガのバージョンは1.0.7295のXP/2000用です。

専門家に質問してみよう