• ベストアンサー

vbs Runメソッド 変数を入れられる?

objshell.Run "cmd / c コマンド ~~~~ > ~~~~" ~~~~の中にvbsで宣言した変数を入れることはできますか? ちなみにその変数の中身はファイルのフルパスです。

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

  • ベストアンサー
  • watabe007
  • ベストアンサー率62% (476/760)
回答No.1

こんな事? Dim myPath myPath = "F:\ip.txt" Set objShell = CreateObject("WScript.Shell") objShell.Run "cmd /c ipconfig /all > " & myPath,0,false

tyarutiru
質問者

お礼

ご回答ありがとうございました。

tyarutiru
質問者

補足

ご回答ありがとうございます。 objShell.Run "cmd /c [コマンド] [対象のファイルを指定] > [結果を出力するとファイルを指定] こんな感じです。

その他の回答 (2)

回答No.3

>「コマンド部分が宣言されていません。」とエラーが出てしまいます。 command para redirect などは、変数なので、事前に初期化しませんと! また固定部は別に変数にしなくてもOKです。 あくまでサンプルなので、そのまま書いたらエラーは100%でますよ。

回答No.2

VBSは使ったことがなかったのですが、 多くの言語では、”+”でつないでいくだけでよく、 PHPなどでは、”."ドットだけで結合するのですが、 VBSでは、”&”みたいですね。 http://vbsh.hokt.net/lesson/16.html objshell.Run "cmd / c コマンド ~~~~ > ~~~~" objshell.Run "cmd / c " & command & " " & para & " > " & redirect みたいな書き方なのかな・・・ (VBSは使ったことがないので、間違っていたらすいませんが、  およそこういうスタンスでいけるらしいです)

tyarutiru
質問者

補足

ご回答ありがとうございます。 わざわざ調べていただいて恐縮ですが、 ご提示頂いたコマンドラインだと、 「コマンド部分が宣言されていません。」とエラーが出てしまいます。

関連するQ&A

  • VBSについて

    VBSの中でDOSのコマンドを実行したいのですが、VBS内で使用した変数を Runで使うことはできないのでしょうか? ################################################ Set WSHShell = CreateObject("WScript.Shell") x = "C:\Documents and Settings\user" WSHShell.Run "cmd.exe /K dir x" ################################################ たとえば上記のようなプログラムを作ったときに最終行のcmd.exeの 実行で変数xを使用したいのですが、可能でしょうか? このまま実行するとコマンドプロンプトの窓が開いて「ファイルが見つかりません」と表示されてしまいます。 何か方法があればご教授ください。よろしくお願いします。

  • VBSについて

    いつもありがとうございます。 初歩的すぎる質問で申し訳ありません。 調べたらすぐわかると思うのですが、急ぎである為、調べるのと並行して質問させて頂きます。 現在VBSでスクリプトを作っているのですが、わからない点があります。 仕様としては他に処理がありますが、わからない箇所のみ記載させて頂きます。 ----------------------------------------------------------- // 変数セット strFile = "C:\test.dat" ' ファイルのパスを入力 // ファイルを実行 objShell.Run "notepad strFile", vbNormalFocus, False ----------------------------------------------------------- ↑上記にてノートパッドを起動して変数 "strFile" のファイルを開きたいです。 パスを直接指定すると上記方法でよかったと思うのですが この場合、どのように書けば動作するでしょうか。。 また、違う方法があればアドバイス頂きたいです。 教えて教えてで申し訳ありませんが、宜しくお願い致します。

  • VBS パスに変数を入れたい

    VBSでファイルのコピー処理を行いたいのですが、その日の日付によって、保存先フォルダを変更する必要があります。 例えば、下の保存フォルダ先を指定する文で、○○○を変数にしたりできたら良いのですが、この様にパスに変数を入れる方法ってありますか? strCopyFolder = "Y:\abc\○○○"

  • 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 "も文字列に入力するには、どのようにすればいいでしょうか? ご意見、アドバイスよろしくお願いいたします。

  • バッチファイルの文字列を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ファイルをスタートアップフォルダに入れておいて、

    エクセル2007の特定ファイルをそのVBSファイルにより自動起動させる方法を教えてください。ちなみに、次のようなVBSファイルを作成しましたがエラーとなってしまいます。 Option Explicit 'オブジェクト変数の宣言とWshShellオブジェクトの作成。 Dim objWshShell Set objWshShell = WScript.CreateObject("WScript.Shell") WScript.Sleep 1000 '1秒待機 objWshShell.Run "C:¥Program Files¥Microsoft Office¥Office12¥EXCEL.exe" です。

  • 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}" ------------------- ■実行結果:コマンドプロンプトは管理者モードで起動するが、文字は入力されない。 恐れ入りますが、何卒よろしくお願いいたします。

  • VBSでのファイル読込、出力操作について

    いつもありがとうございます。 掲題の件について、ご教授頂けますでしょうか。 下記のように『start.vbs』を実行すると『a.txt』の行に記載されている実行ファイル名を読み込み 『test.vbs』にファイル名分のコマンドを書き込みしたいです。 例) ----------------------------- start.vbs (作成途中) ----------------------------- Set objWShell = CreateObject("wscript.shell") Set objFso = CreateObject("Scripting.FileSystemObject") Set objFile = objFso.OpenTextFile("c:\a.txt", 1, False) ' 出力先ファイル Set objVBSFile = objFSO.CreateTextFile(c:\test.vbs, True) If Err.Number > 0 Then WScript.Echo "Open Error" Else Do Until objFile.AtEndOfStream objVBSFile.WriteLine(objFile.ReadLine) Loop End If ----------------------------- a.txt ----------------------------- adobe.exe photoshop.exe ****.exe    ・    ・    ・ ------------------------------ start.vbs ------------------------------ objWShell.Run "cmd.exe c:\adobe.exe ", 0, True objWShell.Run "cmd.exe c:\photoshop.exe ", 0, True objWShell.Run "cmd.exe c:\****.exe ", 0, True    ・    ・    ・ vbsをサイトを参考にして作ってはいるものの、start.vbsを実行すると a.txtのファイル名をvbsに書き込むのが限界です。 少しずつ勉強していくのですが、本件少し早めに作りたいという背景があり ご教授頂けませんでしょうか。 また、わかりにくい説明となっておりますが どうぞ宜しくお願い致します。

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

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

  • VBSでファイルの自動保存

    vbs初心者です。自分なりに調べたのですが、うまくいかず、アドバスを願い致します。目的は、ファイルを自動保存したいのです。 以下のように記載して、最後にカレントデレクトリイに「test.txt」と名前をつけて保存させたいのです。よろしくお願い致します。 Set objShell = WScript.CreateObject("WScript.Shell") WScript.Sleep 1000 objShell.Run "notepad.exe" objShell.SendKeys "hello "  objShell.SendKeys "%{F4}" objShell.SendKeys "%y"