会員登録で5000円分が当たります

vbsからバッチファイルを実行する時に、引数として変数を渡すことはできるでしょうか。バッチファイルは引数を受け取れる記述をしています。変数の値は常に変動します。

CreateObject("WScript.Shell").Run "C:\HULTOOL\test.bat",0 を使ってtest.batを実行しています。"C:\HULTOOL\test.bat aaa(aaa)は固定の数値ですという書き方で、バッチファイルがaaaを第一引数として受け取れることは試してできました。しかし、aaaを変数にすると成功しません。何かよい記述方法はあるのでしょうか。ご教授ください。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

>CreateObject("WScript.Shell").Run "C:\HULTOOL\test.bat:" & aaa


CreateObject("WScript.Shell").Run "C:\HULTOOL\test.bat " & aaa
で、できたと思います。:のかわりにスペースを入れてみてください。
    • good
    • 3
この回答へのお礼

ご回答ありがとうございました。無事解決することができました。

お礼日時:2008/08/30 12:55

成功しない、というのは具体的にどういう現象ですか?


おそらく、 aaa の代わりに変数名(仮に hen )を入れると、バッチファイル側で "hen" という文字列が取れてくる、という事じゃないか、と推測しますが。以下その前提で書きます。

ルールを思い出すべきです。
「"」で囲まれた範囲はあくまで固定の文字列をあらわします。
変数の中身を文字列に連結させたい時は
"文字列:" & hen
などのようにするんじゃなかったですか?

この回答への補足

ご返答ありがとうございます。おっしゃる通り、成功しないという現象は言われるとおりの現象です。
示された方法に従い、
CreateObject("WScript.Shell").Run "C:\HULTOOL\test.bat:" & aaa
(aaaは変数)と記述して実行しましたが、指定のファイルが見つかりませんとのエラーがでました。test.batの後に:がついた為かと思われますが、何か書き方が足りないのでしょうか。

補足日時:2008/08/30 01:23
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。この問題を解決することができました。

お礼日時:2008/08/30 12:57

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QVBscriptからバッチに変数を渡すには?

VBscriptからバッチに文字列を渡したいのですが、どう書いたらいいでしょうか?

VBscriptにWscript.Quit 1と数字を入れた場合、バッチ側は%errorlevel%で取得できると思うのですが、文字列は出来ませんでした。

よろしくお願いします。

Aベストアンサー

こんな感じでできると思います。

[VBS側]
'環境変数に格納したい値をEchoして終了
WScript.Echo kekka

[バッチ側]
for /f "usebackq tokens=*" %%i IN (`call cscript //nologo <vbsフルパス>\hoge.vbs`) DO @set vbskekka=%%i

※INの中のクォートはバッククォートである点に注意

私はこんな感じでよく使っていて、もちろん文字列もOK
ですが、日本語が扱えるかどうかは未検証です。
(半角英数以外はつかった事がない)

Qvbsでからプログラムを、オプションを指定して起動したい。

vbsから、プログラムを実行する歳に、オプションを指定する方法を教えてください。

Firefoxを起動する際に以下のオプションをつけて実行したいのですが
上手くいきません。
(1)-new-tabオプション
(2)URL

===================================

Option Explicit
Dim objWshShell
Set objWshShell = WScript.CreateObject("WScript.Shell")
objWshShell.Run """c:\Program Files\Mozilla Firefox\firefox.exe"""
Set objWshShell = Nothing


Firefoxを起動するだけであれば上の記述でいけますが
(1)と(2)は
objWshShell.Run """c:\Program Files\Mozilla Firefox\firefox.exe"""
の後ろにどのように記述すればいいのでしょうか。

vbsから、プログラムを実行する歳に、オプションを指定する方法を教えてください。

Firefoxを起動する際に以下のオプションをつけて実行したいのですが
上手くいきません。
(1)-new-tabオプション
(2)URL

===================================

Option Explicit
Dim objWshShell
Set objWshShell = WScript.CreateObject("WScript.Shell")
objWshShell.Run """c:\Program Files\Mozilla Firefox\firefox.exe"""
Set objWshShell = Nothing


Firefoxを起動...続きを読む

Aベストアンサー

オプションやURLをすべてRunの第1引数で指定します。

objWshShell.Run """c:\Program Files\Mozilla Firefox\firefox.exe"" -new-tab http://www.google.co.jp"

QバッチファイルからVBAに引数を渡したい

お世話になります。

a.batというバッチファイルがあります。
このファイルを起動させた時にABC.xlsというEXCELが起動するようにしたいのですが、その際にバッチファイル側から"1303"という文字列をabc.xlsに引数として渡したいのです。

EXCEL側ではauto_open(a)で待ち受けて、このaに"1303"が入ってmsgで"1303"と表示させたいのですが、引数は省略出来ません、というエラーが出てしまいます。

どなたかやり方をご教授いただけませんでしょうか?よろしくお願い致します。
環境 WindowsXP SP3 Excel2003

==============================
バッチファイル側
==============================
@echo off

echo バッチファイルを実行します。

ABC.xls "1303"

echo 終了しました。

==============================
EXCEL VBA側
==============================
Sub auto_open(a As String)

Msg a

end sub

お世話になります。

a.batというバッチファイルがあります。
このファイルを起動させた時にABC.xlsというEXCELが起動するようにしたいのですが、その際にバッチファイル側から"1303"という文字列をabc.xlsに引数として渡したいのです。

EXCEL側ではauto_open(a)で待ち受けて、このaに"1303"が入ってmsgで"1303"と表示させたいのですが、引数は省略出来ません、というエラーが出てしまいます。

どなたかやり方をご教授いただけませんでしょうか?よろしくお願い致します。
環境 WindowsXP SP3 Excel2003

===...続きを読む

Aベストアンサー

Excel には起動時に渡せるオプションがありませんね。。
Batでは
Echo 1303 > d:\後で消す.txt
Explorer.exe d:\data\ABC.xls
rem ↑横着してます。"C:\・・・\excel.exe " "d:\data\ABC.xls" が王道です

Excelでは
Sub auto_open()
Dim ff As Integer
Dim buf As Variant
If Dir("d:\後で消す.txt") = "" Then
MsgBox "何もなし"
Exit Sub
Else
ff = FreeFile
Open "d:\後で消す.txt" For Input As ff
Input #ff, buf
MsgBox buf
Close ff
Kill "d:\後で消す.txt"
End If
End Sub

とか?
一時的に"d:\後で消す.txt"に書き込んで
Excelで読み込んだらKillで消してます。

1303 だけでなく任意の値なら
Echo %1 > d:\後で消す.txt
Explorer.exe d:\data\123\ABC.xls
というBatファイルを Test.bat 名で保存して
コマンドプロンプトから
・・・・\test.bat 999
などと・・・ですかね。

Excel には起動時に渡せるオプションがありませんね。。
Batでは
Echo 1303 > d:\後で消す.txt
Explorer.exe d:\data\ABC.xls
rem ↑横着してます。"C:\・・・\excel.exe " "d:\data\ABC.xls" が王道です

Excelでは
Sub auto_open()
Dim ff As Integer
Dim buf As Variant
If Dir("d:\後で消す.txt") = "" Then
MsgBox "何もなし"
Exit Sub
Else
ff = FreeFile
Open "d:\後で消す.txt" For Input As ff
Input #ff, buf
MsgBox buf
Close ff
Kill "d:\後で消す.txt"
End If
End Sub

とか?
一時的に"d:\後...続きを読む

Qbatである文字列内に特定の文字列が含まれているか確認したい

batファイルの中である変数「abc」の中に「test」という文字が含まれていたら○○を行なうという分岐を作成したいのですが、どのように行なえばよいのでしょうか?

そのまま、ずばりのお答えお待ちしております。

よろしくお願い致します。

Aベストアンサー

大文字小文字を区別しなくていいなら、

if not "%abc:test=%" == "%abc%" echo 含まれていた

区別するなら、

echo %abc% | find "test" >NUL
if not ERRORLEVEL 1 echo 含まれていた

Qバッチ処理でファイルの中身を変数に入れるやり方

あるファイルの中には1行の文字列があります。
このファイルをバッチで読み取り、変数に設定したいです。

例:
test.txt
abcacbacbacbacbacbacbacbacb

test,bat
set DATA=[test.txtを読み込んだ値]

よろしくお願い致します。

Aベストアンサー

これですね。

参考URL:http://www.upken.jp/kb/dqvgHNRUxwFDkmtoqEwfXHUjDrevNv.html

QEXCELファイルのカレントフォルダを取得するには?

EXCELファイルのカレントフォルダを取得するには?

C:\経理\予算.xls

D:\2005年度\予算.xls

EXCEL97ファイルがあります。

VBAで
  カレントフォルダ名
(C:\経理\,D:\2005年度\)
を取得する事は可能でしょうか?

CURDIRでは上手い方法が見つかりませんでした。

Aベストアンサー

こんばんは。
Excel97 でも、同じですね。以下で試してみてください。

Sub test()
'このブックのパス
a = ThisWorkbook.Path
'アクティブブックのパス
b = ActiveWorkbook.Path
'Excelで設定されたデフォルトパス
c = Application.DefaultFilePath
'カレントディレクトリ
d = CurDir
MsgBox "このブックのパス   : " & a & Chr(13) & _
   "アクティブブックのパス: " & b & Chr(13) & _
   "デフォルトパス    : " & c & Chr(13) & _
   "カレントディレクトリ : " & d & Chr(13)
End Sub

QVBSから別のVBS起動するとき変数を渡したい

色々調べて、
WshShell.Run """C:\abcd.vbs ””10 20" とすれば
引数10,20を渡してVBSを起動できることは分かりました。
しかし、変数AA=10、BB=20として
WshShell.Run """C:\abcd.vbs ””AA BB” では文字列AA、BBが渡されてしまい、
変数を渡すことはできませんでした。
「変数を渡してVBSを起動する」などで調べても見付かりませんでした。
変数を渡してVBSを起動すること自体できないのでしょうか?

どうぞ、知恵をお貸しください。

Aベストアンサー

WshShell.Run "C:\サンプル\abcd.vbs " & AA & " " & BB

で出来ました。

こちらのページを参考にしました。
http://vba-geek.jp/blog-entry-238.html
https://msdn.microsoft.com/ja-jp/library/cc364421.aspx

Qバッチファイルの文字列を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

このようにして実行すると ’コマンドの構文が誤っています。’ となります。
よろしくお願いします。

Aベストアンサー

> echo msgbox &a& >> %TEMP%\abc.vbs

echo msgbox "%a%" >> %TEMP%\abc.vbs

じゃないですか?

QShell関数からバッチファイルを起動後に、バッチファイルが終了するまで待ちたい。

はじめまして。
掲題の通り、VB.netからshell関数を用いてバッチファイルを起動します。
その後、そのバッチファイルが終了してログファイルの出力を完了した後に、
ファイルを開いて確認したいのです。
thread.sleepなどで大体このくらいかなという時間を待ってみる、
などのやり方しか今は思いつかないのですが、
何か明確にバッチファイルの終了を受け取れる方法は無いものでしょうか。

どなたかご存知の方がいらっしゃいましたらご教授ください。

Aベストアンサー

Shell関数より Processクラスで実行したほうが簡単に待てますよ

Dim oPro as Process
oPro = Process.Start("..\..\a.bat")
oPro.WaitForExit()
MessageBox.Show("Hello")

といった具合です

Qバッチファイル 文字列にスペースがある場合

for /f %%A in ('dir /b /s c:\a aa*.pdf') do copy "%%A" D:\

これはcドライブのa aaというフォルダ名の中を検索するコードですが、
フォルダ名にスペースがあるため、うまく動きません。

"a aa"のように""で囲ってみましたが、駄目でした。

どうすれば良いのか、教えていただきたいので、お願いします。

Aベストアンサー

for /f %%A in ('dir /b /s c:\"a aa"\*.pdf') do echo copy "%%A" D:\
のようにecho でどのようなコマンドが実行されているか確認しましょう。

この記述ではdirコマンドで表示されるパスの中に空白があるため %%A には空白までの文字列しか代入されません。
以下のように修正して試してみてください。

for /f "delims=" %%A in ('dir /b /s c:\"a aa"\*.pdf') do copy "%%A" D:\


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング