Cscript vbsファイル実行方法と途中停止について

このQ&Aのポイント
  • Cscriptを使用してVBSファイルを実行する方法と、途中で停止する方法について教えてください。
  • VBSファイルをCscriptを使って実行する際に、実行中にEnterキーを押さなくても次の処理に進める方法について知りたいです。
  • WScript.StdInを使用してVBSファイルの実行を制御しようとしましたが、うまく機能しませんでした。効果的な方法を教えてください。
回答を見る
  • ベストアンサー

CScript vbsファイル実行 途中で止めたい

Cscript でVBSファイルを実行するとコマンドプロンプトの画面が立ち上がって処理がはじまりますが、 実行中にEnterキーをおさないと次の処理にいかないように、プログラムを書きたいのですが、 書き方わかる方いらっしゃいましたら、教えてください。Enterキーでなくても構いません。 例えばaaa.vbsの中で、大きく二つ処理があって、(1)の処理→(2)の処理の順番だった時に (1)の処理→(コマンドプロンプト上で)止める、自分でなにかボタン押す→(2)の処理みたいな感じにしたいと思っています。 自分が試したのが、以下です、駄目でした。 WScript.StdInを使ったのですが、これを一度使った後に、Wscript.Echoを使うと、 次のWScript.StdInが使えなくて意味がありませんでした。 WScript.StdIn(入力表示されてとまった) → Wscript.Echo "テスト" →WScript.StdIn(入力表示なく、とまらない)

noname#204675
noname#204675

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

  • ベストアンサー
  • nora1962
  • ベストアンサー率60% (431/717)
回答No.1

http://www.atmarkit.co.jp/fwin2k/operation/wsh03/wsh03_03.html strExpr = Wscript.StdIn.ReadLine のように「ReadLine」メソッドを使うのはだめですか。

関連するQ&A

  • vbsの保存方法が分からない

    Wscript.StdOut.Write "Height(m) = " H = WScript.StdIn.ReadLine Wscript.StdOut.Write "Weight(kg) = " W = WScript.StdIn.ReadLine BMI = W / (H * H) Wscript.StdOut.Write "BMI = " & BMI & vbLf BMIの上記コードをコマンドプロンプトで書き込み practice に保存しようとすると なぜか bmi とだけ表記されて本のような bmi.vbs にならない。 従い、これを cscript.bmi.vbs で実行しようとエンターすると スクリプト C: ¥practice¥bmi.vbs 行:1 文字:1 コード:80070006 ソース:(null) となり、実行できない。 practice に保存するとき、 ファイル名 の蘭に *.txt を消して bmi.vbs と記入している。これが間違いですか?

  • このスクリプト実行できません。教えて!

    スクリプトを勉強中です。 https://technet.microsoft.com/ja-jp/scriptcenter/ff519411.aspx#EAE初心者 上のサイトの最初に記載のある試供ですが上手く表示されません。どうしてでしょうか? 試供 ------------- Wscript.echo "My very first script."そうです。この 1 行がスクリプトです。これは非常に単純なスクリプトであり、たいていのスクリプトはこれより長くなりますが、これもスクリプトです。ここで、この 1 行をどのように処理すればよいのかという疑問がわいてきます。それは非常に単純です。 メモ帳を開きます。 ブラウザからスクリプトをコピーし、メモ帳に貼り付けます。 test.vbs のように、拡張子 .vbs を付けてスクリプトを保存します。 ここでコマンド ウィンドウを開き、ファイルを保存したフォルダに移動し、次のように入力します。 cscript test.vbs前述のスクリプトでこの操作を行った場合、出力は次のようになります。 My very first script. -------------- 私は メモ帳にwscript.echo"wy very first script"を記載し、 保存はファイル名、"test.vbs"とし、 保存先は新しいフォルダ名、testに保存しました。 そのtestのフォルダを開き、そこでコマンドプロンプトも開きcscript test.vbsを入力したのですが、見つかりませんと記載されます。 何が悪いのでしょうか? 宜しくお願いします。

  • ファイル内の文字列を置換するcscriptについて

    お世話になります。 早速ですが、 以前、以下のような、「UNIXファイルの文字列を置換する」プログラムを Cscript で記述する方法を教えていただいたものですが、 cscript //nologo foo.vbs < t22.org > t22.txt ====foo.vbs==================================================== Do While Not WScript.StdIn.AtEndOfStream str = WScript.StdIn.ReadLine WScript.StdOut.Write replace(str,"abc","xxx") & vbLF Loop 今回、これをさらに、 Cscript で「置換するファイル」と「置換する文字列」も指定するプログラム にしたいと思い記述してみたのですが、下記のような問題が発生します。 「置換後のファイルの最後に改行文字が入ってしまいます。」原因がわかりません。 cscript //nologo f00.vbs t22.txt aaa xxx ====foo.vbs==================================================== Dim myFile Dim myRec Dim fso Dim txt, wd1, wd2 txt = WScript.Arguments(0) wd1 = WScript.Arguments(1) wd2 = WScript.Arguments(2) WScript.Echo txt WScript.Echo wd1 WScript.Echo wd2 Set fso = CreateObject("Scripting.FileSystemObject") Set myFile = fso.OpenTextFile(txt) myRec = myFile.ReadAll myRec = replace(myRec,wd1,wd2) myFile.Close Set myFile = fso.CreateTextFile(txt) myFile.WriteLine (myRec) myFile.Close =============================== このコードのどこに問題があるのでしょうか? 読み込んでいるファイルは、Shift-JIS LF改行のファイルです。 あるいは、 もっと簡単な記述方法等ありましたら、ご意見、ご指導ください。

  • VBSファイルを定期的に自動実行する方法

    毎日同時刻に下記のVBSファイルを自動実行したいと思います。 タスクスケジューラで実行すると download.exe は起動しますが 表示されたダイアログがアクティブ状態にならないため (タイトルバーが灰色のまま、タスクバーのボタンが点滅)、 文字入力ができないまま、処理が終了してしまいます。 1.ダイアログをアクティブにし、正常に処理を実行させるには   どのように記述すれば良いですか? 2.このVBSファイルをユーザーがログオフされている状態で   実行することは可能ですか? 恐れ入りますが、ご存じの方がおられましたら、ご教示願います。 <環境> Windows 2008 Server R2 standard (64ビット) <D:\aaa.vbs> Set objShell = WScript.CreateObject("WScript.Shell") 'ダウンロードEXEを実行 Set objExec = objShell.Exec("D:\download.exe") WScript.Sleep 1000 objShell.AppActivate(objExec.ProcessID) 'ファイルのダウンロード先を指定し、実行(ENTER) WScript.Sleep 1000 objShell.SendKeys "D:\data.txt~"

  • バッチファイルの文字列をVBSに渡すには

    バッチファイルからVBSを実行しています。 echo msgbox "123" >> %TEMP%\abc.vbs cscript //NoLogo %TEMP%\abc.vbs >%TEMP%\abc.cmd del %TEMP%\abc.vbs call %TEMP%\abc.cmd del %TEMP%\abc.cmd このバッチを実行すると 123 が表示されます。 "123" の部分を変数として引渡したいのです。 set a=123 echo msgbox &a& >> %TEMP%\abc.vbs このようにして実行すると ’コマンドの構文が誤っています。’ となります。 よろしくお願いします。

  • VBSで管理者モードのcmdにキーを送るには?

    お世話になります。 業務上の必要に迫られているため、質問させて頂きます。 恐縮ですが、ご存じの方、御教示頂けますでしょぅか? VBSでコマンドプロンプトを管理者モードで起動し、かつ、Robocopyコマンドをキー入力送信するVBSを作成したいのですが、上手く動きません。 ※コピーしたいのは、HOSTSファイルで、コマンドプロンプトで手入力すると正常に動作しますが、バッチファイル(.bat)に記述すると「アクセスが拒否されました」が発生するため、VBSでコマンドプロンプト上にキーを入力させたいというのが、主旨です。 以下スクリプトを記述しますが、解決策をご存じの方、教えて頂けないでしょうか? ※c:\temp\hostsにおいたものをコピーさせることにしています。 ------------------- // 管理者モードでコマンドプロンプト起動 Set obj = Wscript.CreateObject("Shell.Application") obj.ShellExecute "cmd.exe", "/k", "", "runas", 1 //robocopy 入力 Set objShell = WScript.CreateObject("WScript.Shell") WScript.Sleep 3000 objShell.SendKeys "robocopy /copy:DT /ZB /R:100 /W:2 /is /xjf c:\temp\hosts c:\windows\system32\drivers\etc hosts" objShell.SendKeys "{ENTER}" ------------------- ■実行結果:コマンドプロンプトは管理者モードで起動するが、文字は入力されない。 恐れ入りますが、何卒よろしくお願いいたします。

  • VBScript(WScript)のバッチファイル実行

    お世話になります。 VBScriptで困っています。 ご存知の方、ご教示願えますでしょうか。 Windowsでバッチファイルを実行したときに、DOS画面(コマンドプロンプト)が一瞬パッて表示されるかと思います。 現在開発中のシステムで、プログラムからバッチファイルを自動で実行する処理を入れております。 通常ならばバッチファイルを実行した場合、DOS画面が表示されてしまいますが DOS画面を出さないようにプログラムを組んでいます。 つまり、VBScriptからバッチファイルを実行しております。 以下、VBScriptのソースを記載します。 Set objShell = WScript.CreateObject("WScript.Shell") fcresult = objShell.Run("C:\abc.bat", 0, True) wscript.quit fcresult 上記のVBSを実行すると、必然的に「abc.bat」が実行されます。 しかし、現在僕が使っている環境ですとDOS画面が表示されません(←これがやりたいこと) しかし、お客さんの環境で同じ様にVBSからバッチファイルを実行すると 「C:\WINDOWS\System32\CScript.exe」という名前でDOS画面が起動されてしまいます。 周りの環境でもVBSからバッチをたたくような処理を行ってみましたが、DOS画面が起動されず。。。 正直、再現が難しいため大変困っております。 お客さんの環境では100%再現されます。 全くもって原因がつかめておりません。 Windowsのセキュリティの設定でしょうか!? ご存知の方いらっしゃいましたら、知恵をお貸しください。 よろしくお願いいたします。

  • SQLServer2005のストプロでxp_cmdshellを使いvbsファイルを実行できない

    ストプロ内でxp_cmdshellを使用し、vbsファイルを実行したいのですが実行できません。 vbsファイルはxp_cmdShellでキックされたらSQLサーバのデータをSELECTし、テキストファイルにSELECTで取得した行数だけ行を追加するという内容です。 vbsファイルはコマンドプロンプトから実行すると動くので正しいと思います。 ストプロにはvbsファイル実行の前後にtableのupdate作業があり、 その2つは行われます。しかし、書き出されるはずのデータがテキストファイルに書き出されません。 vbsファイルは実行されていないようですがエラーは出ず正常終了となり、 xp_cmdshell実行後の戻り値は0で成功となっています。 xp_cmdshellオプションは有効になっており、は混合モードでSysAdminの権限を持つユーザーで処理をしています。 また、ストプロではなく、SQLServerManagementStudioから下記のようにvbsファイル実行しようとした場合、エラーなく正常終了するのですがテキストファイルにデータは追加されていません。  EXEC @result = xp_cmdshell 'Cscript c:\AddRow.vbs' しかし、EXEC xp_cmdshell 'dir *.exe'は実行できます。 vbsファイルをxp_cmdshell で実行するときは何か特殊な記述が必要なのでしょうか。何がいけないのかわからず困っております。お気づきのことがありましたらご指摘いただけますようお願い致します。 以下にストプロの中身をを記述します。 BEGIN   SET NOCOUNT ON; -- テーブルのアップデート処理   UPDATE table1 SET Status = 1   WHERE Status = 0 --ファイル書き出しvbsの実行   DECLARE @result int   SET @result = 1   EXEC @result = xp_cmdshell 'Cscript c:\AddRow.vbs' --ここは下記のようにCscriptを抜いても試しましたがだめでした。 --EXEC @result = exec master..xp_cmdshell 'c:\AddRow.vbs'   IF (@result = 0)   BEGIN --xp_cmdshellの実行が成功したときのみこの処理に入る予定。 --実際は実行されていないようだが@result が0なのでこの処理を行っている。     UPDATE table1 SET Status = 2     WHERE Status = 1   END END

  • VBSでDOSプロンプト

    諸事情がありVBSでDOSプロンプトの制御をしたいのです。 スクリプトを実行したらいくつかのDOSコマンドを処理して結果を表示する よくあると思うんですがYes/Noで聞かれるような処理もつけたいのです。 プロンプト起動まではできたのですがコマンドをどのように渡せばいいのかが わかりません。 いろいろ調べては見たのですが・・・ よろしくお願いいたします。

  • cscriptで文字変数 に ” を入力するには

    お世話になります。 早速ですが、質問があります。 c:\test\test.exe -path "D:\data" -file "aaa.txt" -flag a というコマンドをcscript のプログラムから起動したいのですが、コマンド文字列を文字列変数に代入する方法 がありましたら、教えてください。 Cscript test.vbs %1 ======================================= Dim WshShell Dim oExec Dim Cmd Dim File File = WScript.Arguments(0) Cmd = "c:\test\test.exe -path "D:\data" -file "a.out" -flag " & File                     ↑↑↑↑                  これができません? Set WshShell = CreateObject("WScript.Shell") set oExec = WshShell.Exec(Cmd) Do While oExec.Status = 0 Wscript.Sleep 100 Loop "も文字列に入力するには、どのようにすればいいでしょうか? ご意見、アドバイスよろしくお願いいたします。

専門家に質問してみよう