• ベストアンサー

dos コマンドを vbsで行うには。

こんにちは。  --ip.bat の内容---- ipconfig >> C:\WINDOWS\デスクトップ\ip.txt ---------- ip.batのアイコンをクリックすると、テキストファイルが作成されますが、これと同じことをvbsでするにはどうゆう記述になりますでしょうか? もしくは、vbsでBATファイルを呼び出す方法は?

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

  • ベストアンサー
回答No.4

WSH5.6にアップデートしてみてください。 (IEのバージョンは?)

参考URL:
http://www.microsoft.com/japan/msdn/scripting/default.asp
norinori555
質問者

お礼

あたらしいバージョンが出てたのですね。さっそく5.5からwsh5.6にアップしました。 IEは5.5sp2のまま使用します。6.0に変えたほうがよいでしょうか。重たくなりそうなのでバージョンアップは控えてます。 前回教えていただいた、スクリプトを実行したところメッセージボックスには[OK]だけが表示されるようになり、エラーは一応解消しました。 ただIPアドレスが表示されないので原因をしらべてます。

norinori555
質問者

補足

できました。!! ありがとうございました。 Set objExec = WshShell.Exec("コマンド") にてコマンドに入力する値を間違ったため [ok]ボタンしか表示されませんでした。 原因 ipconfigをip.config とピリオドを入れたため正しく動作しませんでした。コマンドの入力ミスのときはエラー表示しないようですね。気をつけます。 もしかしてエラーを表示する方法もあるのでしょうか?

その他の回答 (3)

  • minimum
  • ベストアンサー率46% (6/13)
回答No.3

vbsはほとんど使ったことがないのですが… No.1の方の方法でバッチが動くのならと思い Dim WSH Set WSH = CreateObject("WScript.Shell") WSH.Run("command /c ipconfig >> ip.txt") とか試してみたところ ちゃんと動いているようでしたよ

norinori555
質問者

お礼

おはようございます。 動きますね。ありがとうございます。 この方法だと、バッチファイルを別に用意しなくても良さそうですね。 command /c の使い方についてさらに調べてみたいと思います。 #2の回答者の方へ、お答えの内容について理解を深めているところですのでコメントは少しまってください。スクリプトの切替とWshShell.Execの使い方を調べてます。

回答No.2

基本的には次のようなコードでできます。ただし事前にDOSプロンプトで cscript //h:cscript と打ってvbs(&js)の既定のスクリプトエンジンをcscriptにしておく必要があります。 Set WshShell = WScript.CreateObject("WScript.Shell") Set objExec = WshShell.Exec("コマンド") Do While objExec.Status = 0 WScript.Sleep(100) Loop sout = "" Do While Not objExec.StdOut.AtEndOfStream sout = sout & objExec.StdOut.ReadLine & Chr(13) & Chr(10) Loop MsgBox sout

norinori555
質問者

お礼

回答ありがとうございます。 エラーになってしまいました。 行: 2 文字: 1 エラー: オブジェクトでサポートされていないプロパティまたはメソッドです。: 'WshShell.Exec' コード: 800A01B6 ソース: Microsoft VBScript 実行時エラー Set objExec = WshShell.Exec("コマンド") の部分ですが、具体的にはどうなりますでしょうか? ”コマンド”の部分にipconfigと入れてみたのですが、エラーでした。 コマンドラインからの実行方法ですが、アイコンを右クリックして「DOSプロンプトで開く」を選択しても良いようですね。

  • yanmaa
  • ベストアンサー率45% (207/457)
回答No.1

とりあえずバッチファイルの実行なら簡単なので --vbsの中身----- Dim WSH Set WSH = CreateObject("WScript.Shell") WSH.Run("ip.bat") ---------------- では駄目ですか?

norinori555
質問者

お礼

ありがとうございます。 その方法で起動できました。 あとは、直接DOSコマンドを利用できたらいいのですが・・ と言うのも自分のIPアドレスを取得してそれを表示させようとしてるのですが、なんか方法ありますでしょうか? 私がイメージしてるのは IP.vbsのアイコンをクリックしたら画面に 「あなたのIPアドレスは******です。」 とまずは表示させたいのです。 

関連するQ&A

  • vbsより実施のdosコマンド(xcopy)について教えてください。

    何方かご教授頂けませんでしょうか。 1.E:→C:へ特定のDir/Fileコピーを作成したい。 2.特定のDir/Fileは、入力リストにFilePathが行単位で記述される。 3.C:にはE:と同様なDirが存在するものもある。 4.VBSは入力リストを行単位で読み込み、BATファイルへpathを渡す。 5.コマンド発行→コマンドより戻り値→VBS→コマンド発行→・・・  と出来ればさせたいです。(この部分どうしてよいものか?) VBS--- Set objFso = CreateObject("Scripting.FileSystemObject") Set objWsh = WScript.CreateObject("WScript.Shell") inFL = objFso.GetAbsolutepathname("pathlist.txt") inBAT = objFso.GetAbsolutepathname("xcopy.bat") Set objin = objFso.OpenTextFile(inFL,1) Do While objin.AtEndOfStream <> True inline = objin.readLine inpath = "E:"&inline outpath= "C:"&inline objWsh.Run(inBAT&" "&inpath&" "&outpath) Loop bat--- echo F|xcopy /Y %1 %2 pathlist--- \temp\temp1\a.xls \temp\temp1\b.xls ~ 上記、VBSを実行させた結果は --- C:\temp>echo F | xcopy /Y E:\temp\temp1\a.xls C:\temp\temp1\a.xls C:\temp>echo F | xcopy /Y /Y E:\temp\temp1\a.xls C:\temp>echo F | xcopy /Y /Y /Y   ~ 繰返し --- 現状、DOS窓の中、コマンドが繰り返され止まりません。 何方か、「コマンド発行→コマンドより戻り値→VBS→コマンド発行→・・・」、Dir/Fileのコピーがpathlist行単位に行えるようご教授頂けませんでしょうか。 何分初心者なので、拙い文章、ご容赦願います。

  • DOS窓を閉じないようにするには

    batファイルで ipconfig/all と ping3箇所を一度にできるものを 作成しようとしてるのですが、 バッチファイルですとアイコンをクリックして一瞬で閉じてしまいます。 (チラリと見えはしますが) 閉じずに開いたままにするにはどうすればいいでしょうか? dos窓開いて、手入力でもいいのですが毎回同じ作業を繰り返すものですから できれば簡単にしたいと考えてます。

  • VBSで文字列の置換

    VBSまったくの初心者で、「そんなもんWebで調べろ」とお叱りを受けるのを承知でお聞きします。 C:¥置換¥あああ.txt のテキストファイル内にある文字列"ABC"を"DEF"に置換するVBSはどのように記述すればよいでしょうか?。 よろしくお願いいたします。

  • batコマンド ファイルの一覧

    batファイルを使用して、指定したフォルダの中にあるテキストファイルの一覧を「一覧.txt」というファイルを新規作成して、そのファイル内に記載したいのですが何か良い方法はないでしょうか? ご教示お願いします。 (例) フォルダAの中にテキストA、テキストB、テキストCがある。 batファイルを実行すると同フォルダ内に「一覧.txt」が作成され、ファイルを開くと テキストA テキストB テキストC と記載されている。

  • VBSでファイル存在の有無チェック

    お世話になります。 前回も似たような質問をしておりましたが改めて質問させていただきます。 下記のような"URIAGE.bat"というバッチファイルを実行するTEST.VBSがあります。 CreateObject("WScript.Shell").Run "C:\URIAGEDATA\system\URIAGE.bat",0 やりたい事は"C:\URIAGEDATA\system"配下に"空ファイル.txt"というファイルが存在しなければURIAGE.batを実行して、存在しt場合はURIAGE.batを実行しないで終了、という仕組みにしたいのです。 前回の質問時に"URIAGE.bat実行中に"C:\URIAGEDATA\system"配下に"空ファイル.txt"というチェック用のテンポラリーのファイルを作成して、URIAGE.batを実行した時に、このファイルの存在の有無をチェックする方法をご教授いただきまして、お陰様でうまくいきました。 今回は呼出し元のTEST.VBSの中で"C:\URIAGEDATA\system"配下に空ファイル.txt"が存在しなければURIAGE.batを実行して、存在しなければ実行しないで終了、という様にしたいのです。 環境:Windows XP SP SP3 どなたかご教授いただけますと幸いでございます。

  • DOS findコマンドのバッチでストールする

    DOSコマンドプロンプトで.batファイルを作成。 内容は find "2007:01" access_log_2007_04_11.txt >log2007041101.csv このバッチファイルを、検索するaccess_log_2007_04_11.txt と同じフォルダー上において、ダブルクリックで起動すると。 コマンドプロンプトが開くのだが、以前実行した、 find "2007:00" access_log_2007_04_05.txt >log2007040500.csv が、延々と実行され。 コマンドプロンプトを閉じても log2007040500.csv を、消しても消しても、作成される。 システムを落とすしかなくなる。のです。 4月の頭では正しく動作していたんですが???

  • DOSコマンドを教えてください

    DOS(batファイル)で、コンピュータ名とIPアドレスを取得して、csvに吐き出したいのですが、 IPアドレスの取得ってどうすれば良いのでしょうか? ipconfigを使うとIP_Addressの次のsubnet_maskを取得しているように思えます。 今、私が作ってみたのは以下のコマンドです。 rem コンピュータ名取得 set my_computername=%computername% rem IPアドレス取得 for /f "skip=7 tokens=15" %a in ('ipconfig') do set my_ipaddress="%a" rem CSVファイル出力 echo %my_computername% , %my_ipaddress% >> sample_out.csv また、そのアドレスにもダブルコーテーションが付加されています。取ることはできますか? DOSコマンド自体、あまり知識がなく困っています。 方法がありましたら教えていただけませんか?

  • VBSで自身の実行状態をチェックする方法

    お世話になります。 VBSについてご教授いただきた事がございます。 下記のような"URIAGE.bat"というバッチファイルを実行するTEST.VBSがあります。 当初はURIAGE.batというバッチファイルを直接クリックして動かしていましたがDOS画面を表示させたくないと思い、検索したところ下記のようにVBSに記述すれば非表示になる、とありましたので早速試してみました。 CreateObject("WScript.Shell").Run "C:\URIAGEDATA\system\URIAGE.bat",0 ここからが質問ですが、あるユーザーがこのVBSを動かした直後に、再度このVBSをクリックしてしまい、処理がエラーになってしまいました。 こういった場合にTEST.VBSが自分が"動作中"ということを認識して"動作中"というエラーメッセージを出してURIAGE.bat処理を回避させる方法はありますでしょうか? 環境:Windows XP SP SP3 どなたかご教授いただけますと幸いでございます。

  • vbsでのコマンド実行について

    お世話になります。 現在、vbs内でRunメソッドとExecメソッドを使用してコマンドを実行しています。 一応、自分の求めている処理はできたんですが・・・ 戻り値を取得する為にExecメソッドでコマンドを実行する記述があるのですがコマンドプロンプトが表示してすぐに消えてとぱかぱかしてしまっています。 そこで皆さんに質問があり、投稿しました。 コマンドをExecメソッドで実行している所をRunメソッドで実行するように変更してみましたがうまくいきませんでした。 ※変更したのはコマンドの最後に「> 20161111.txt」を追加してテキストファイルに出力させるようにコマンドを変更しました。一応、コマンドプロンプトで直接、コマンドを実行したら問題なく戻り値が「20161111.txt」内に出力されるのを確認しました。 objShell.Run ”C:\ ~.exe ・・・ 20161111.txt”, 0, True 説明が下手でうまく伝える事ができたのかが心配ですがどうか私にご教授いただけませんでしょうか。 何卒、宜しくお願いします。

  • UWSCからvbsファイルを呼ぶ方法

    UWSCからvbsを呼ぼうと思って以下の記述をしてみましたが、上手く動きません。 str="C:\SendMail.vbs" Exec(str) SendMail.vbsファイルをマウスでクリックすると正常にメールが届くのでSendMail.vbs内の記述には問題なさそうです。 ググってもUWSCファイル内にvbsのファンクションを記述する方法はありましたが、vbsファイルの呼び出し方は見つけられませんでした。 正しい記述方法があれば教えて下さい。よろしくお願いします。

専門家に質問してみよう