ここから質問投稿すると、最大4000ポイント当たる!!!! >>

WSHを利用して、アプリケーションを実行しています。その際の、処理内容(結果)をテキストに落としたいのですが、うまくいきません。どなたか、アドバイスを宜しくお願いします。

A 回答 (5件)

単純に実行の仕方がまずいだけかと。



CScript スクリプト名 //Nologo >c:\list.txt

vbsやjsのファイルを直接起動してるのにWScriptが規定のスクリプトエンジンになってませんか?

そんなことをしたくないのであれば、RunメソッドではなくExecメソッドを使い、StdOutを自分でテキストファイルに出力してください。
http://www.microsoft.com/japan/msdn/library/defa …

参考URL:http://www.microsoft.com/japan/msdn/library/defa …
    • good
    • 0

FLG ="cmd /c C:\temp\application.exe -ls > list.txt"


Set WshShell = CreateObject("WScript.Shell")
WshShell.Run FLG

↑みたいにcmdを経由させてみては?

コマンドプロンプト ウィンドウを隠したいときは

WshShell.Run FLG,0
ってしてね。
    • good
    • 1

エラーメッセージは出ていないのでしょうか? であれば的外れかもしれませんが、コマンドはバッチファイルに書いてそのバッチファイルをWSHから実行するとどうでしょう。


ってか最初からバッチだけでも良いけど。
    • good
    • 0

どんなアプリケーションで、どんな処理をしているのでしょうか?


基本的に、そのアプリケーションにテキストに落とす機能が無いとダメだと思うのですが?

この回答への補足

説明が足りずにすみませんでした。
下記のような、WSHを実行しています。

FLG ="C:\temp\application.exe -ls -f datafile "
Set WSH = CreateObject("WScript.Shell")
WSH.stdOut.Run FLG

コマンドプロンプトから"application.exe -ls -f datafile"を実行すると、あるデータのリストを表示するので、コマンドプロンプトから"application.exe -ls -f datafile >list.txt"を実行して"list.txt"を生成しています。

同様にWSHからFLG ="C:\temp\application.exe -ls >list.txt"として実行してもテキストが生成されません。

WSH.Runを実行した際に、ログファイルを生成するにはどうしたら良いでしょうか。

補足日時:2004/07/22 17:32
    • good
    • 0

どううまくいかないのでしょうか。


・そもそもファイル生成ができない
・文字化けしてる
・結果が取得できない
    • good
    • 0

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

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

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

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

QVBAで外部プログラムを非表示で実行するには

VBAとVBScriptを混同しているのかもしれませんがよく分からないので教えてください。

Excel2010のVBAから、外部プログラム(test.exe)をコマンドプロンプトを非表示の状態で実行して、外部プログラムの実行が終了するのを待ってから、次の処理をさせたいのですが、test1のプログラムでは(A)の部分でエラーになってしまいます。また、test2のプログラムでは正しく実行されるのですがコマンドプロンプトのウインドウを非表示にする方法がよく分かりません。

test1のプログラムでエラーをでなくする方法、または、test2のプログラムでコマンドプロンプトのウインドウを非表示にする方法がありましたら教えてください。

-------------------------------------------------------
Sub test1()
 Dim ws As Object
 Dim we As Object
 Dim command As String
 command = "C:\test.exe"
 Set ws = CreateObject("WScript.Shell")
 Set we = ws.Run("%ComSpec% /c " & command, 0, False) '<===(A)
 Set we = Nothing
 Set ws = Nothing
End Sub
-------------------------------------------------------
Sub test2()
 Dim ws As Object
 Dim we As Object
 Dim command As String
 command = "C:\test.exe"
 Set ws = CreateObject("WScript.Shell")
 Set we = ws.exec("%ComSpec% /c " & command)
 Do Until we.Status
  DoEvents
 Loop
 Set we = Nothing
 Set ws = Nothing
End Sub
-------------------------------------------------------

VBAとVBScriptを混同しているのかもしれませんがよく分からないので教えてください。

Excel2010のVBAから、外部プログラム(test.exe)をコマンドプロンプトを非表示の状態で実行して、外部プログラムの実行が終了するのを待ってから、次の処理をさせたいのですが、test1のプログラムでは(A)の部分でエラーになってしまいます。また、test2のプログラムでは正しく実行されるのですがコマンドプロンプトのウインドウを非表示にする方法がよく分かりません。

test1のプログラムでエラーをでなくする方法、または、te...続きを読む

Aベストアンサー

Runメソッドを何処で調べましたか?
詳しくはこちらを見てください。
http://msdn.microsoft.com/ja-jp/library/cc364421.aspx

先ず、Aで失敗する理由ですが、Runメソッドの戻り値は何型ですか?
説明を見れば分かると思いますが、整数です。オブジェクトでは
ありません。従って、戻り値の型が違うし、Set文を使うのもオカシイ

次に、プログラムの終了を待つなら、Runメソッドの第3引数は
省略するか、Trueを指定すべきです。

test2のExecメソッドはオブジェクトを返しますが、この中には
標準入出力やエラー出力用の出し入れ口があり、人に代わって
データを送り込んだり、出力結果を見て、処理を変更するなどを
行う場合に使いますので、今回の仕様では使いません。
尚、DoEventsでグルグル回る処理は絶対にすべきではありません。
必ずSleepを入れるべきだし、DoEventsの使用そのものを避ける
べきだからです。この文がどのような効果をもたらすかを理解しており、
それを制御できるだけの技術があれば別ですが・・・

Runメソッドを何処で調べましたか?
詳しくはこちらを見てください。
http://msdn.microsoft.com/ja-jp/library/cc364421.aspx

先ず、Aで失敗する理由ですが、Runメソッドの戻り値は何型ですか?
説明を見れば分かると思いますが、整数です。オブジェクトでは
ありません。従って、戻り値の型が違うし、Set文を使うのもオカシイ

次に、プログラムの終了を待つなら、Runメソッドの第3引数は
省略するか、Trueを指定すべきです。

test2のExecメソッドはオブジェクトを返しますが、この中には
標準入出力やエラー...続きを読む

QExcelVBAでDOSコマンドの標準出力をリアルタイムでフォームへ出力するには

いつもお世話になります。

タイトルにある通りです。
VBAより実行したDOSコマンドの実行結果を、tailコマンドのように、フォーム(テキスト部品など)に出力させたいと考えています。

一度実行結果をファイルへ保存してそれをフォームへ出力させる、というのではなく、あくまでリアルタイムで表示する、ということは可能でしょうか?

よろしくお願いします。

Aベストアンサー

回答番号:No.1の続きになりますが(こんなレスの付け方でいいのか?)

1. 標準入力から読み込んだ文字列を指定WindowへSendMessageで送信するプロセスを作成。
2. VBAのユーザフォームをサブクラス化してハンドラ作成。(受信文字列をテキストボックスへ追加)
3. VBAから実行するコマンド文字列を、送信プロセスにリダイレクトするように作成して実行。

で、できるような気がしますが、どこがわかりませんか?
回答3にもあるように、
>VBAでやる範疇ではないでしょう。
が全てのような。

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から、プログラムを実行する歳に、オプションを指定する方法を教えてください。

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"

QVBSで"をエスケープする文字は?

VBSで"をエスケープする文字はなんでしょうか?

Aベストアンサー

エスケープといった考えが VBSではなかったように思います

"をあらわすには "で括る必要が生じます
たとえば "abc" といった内容なら """abc""" といったリテラルになります
一番外側の "のペアが 文字列としての"になります

"ab"cが欲しいなら """ab""c"
a"bc"が欲しいなら "a""bc"""
a"b"cがほしいなら "a""b""c"
といった具合になります

QWshShellから起動したbat(ftp)の応答メッセージを取得するには

下のbatファイルをDosプロンプトから起動した場合は
resulf.logに230 User zerokara logged in.と出力されますが、
これをVBからWshShellオブジェクトのExecメソッドで起動しますと
resulf.logにftpの応答メッセージ(230 User zerokara logged in.など)が
出力されませんのでfindできずエラーを返してしまいます。
よろしければ、この現象の意味とWshから起動した場合にresulf.logに
ftpの応答メッセージを出力する方法を教えてください。
宜しくお願いします。


test1.bat
ftp -s:C:\VB\ftp_test.scr >resulf.log
type resulf.log | find /i "230"
IF NOT %ERRORLEVEL% == 0 GOTO ERROR
copy 命令

Aベストアンサー

>Set we = ws.Exec("cmd.exe /c D:\VB\test.bat > test.log")

見落としてました(^^;
Exec使ってたんですね。
でしたら標準出力への出力結果はファイルには出ません。
Execメソッドの戻り値であるWshScriptExecのStdOutプロパティからアクセスすることになります。

ファイルに出力されるのを希望されるんでしたら、Execではなく、Runメソッドを使用してください。こちらでも終了待てますんで。

Qvbsでテキストファイル内の文字列検索

初心者です。

テキストファイルを指定し、含まれる文字列を検索し、
結果表示したいと考えております。

色々探して、以下で作成したのですが、
うまく動いてくれません。

出来ましたら、テキストファイルの中の文字列の
一部分を指定して動作させたいと思っております。

どなたかご教示のほど宜しくお願い致します。


----------------------------------------------------

Set WSHFso = CreateObject("Scripting.FileSystemObject")
Set WshShell = WScript.CreateObject("WScript.Shell")
Dim strSearchWord

Set tmpFile = WSHFso.OpenTextFile("C:\AAA.txt")

Do Until tmpFile.AtEndOfStream
tmpLine = tmpFile.ReadLine
strSearchWord = strSearchWord & tmpLine & vbcrlf
Loop


Dim SearchWord
SearchWord = split(strSearchWord," ")


if InStr(SearchWord(ix), "test")<>0 then
WScript.Echo " testを含みます。"
else
WScript.Echo " testを含みません。"

end if


----------------------------------------------------

初心者です。

テキストファイルを指定し、含まれる文字列を検索し、
結果表示したいと考えております。

色々探して、以下で作成したのですが、
うまく動いてくれません。

出来ましたら、テキストファイルの中の文字列の
一部分を指定して動作させたいと思っております。

どなたかご教示のほど宜しくお願い致します。


----------------------------------------------------

Set WSHFso = CreateObject("Scripting.FileSystemObject")
Set WshShell = WScript.CreateObject("WScript.Shell...続きを読む

Aベストアンサー

こんにちは。

コードの細かい部分の目的としている部分は良く分からないけれども、少し直してみました。あくまでも、VBSです。元のコードは、ちょっと違うようです。

'-------------------------------------------

Set WSHFso = CreateObject("Scripting.FileSystemObject")
'Set WshShell = CreateObject("WScript.Shell") '??
Dim strSearchWord
dim i
'-------------------------------------------
Public Const FileName ="C:\AAA.txt"
Public Const sWord =""test"
'-------------------------------------------
Set tmpFile = WSHFso.OpenTextFile(FileName)

Do Until tmpFile.AtEndOfStream
tmpLine = tmpFile.ReadLine
i = i + 1
nflg= fSearchWord (tmpLine)
If nflg Then Exit Do
Loop
If nflg Then
MsgBox i & "行目に" & sWord &"を含みます。",64
Else
MsgBox sWord &"を含みませんでした。",48
End If
'-------------------------------------------
Function fSearchWord(tmpLine)
Dim flg
SearchWord = Split(tmpLine," ")
For ix = LBound(SearchWord) To UBound(SearchWord)
If Len(Trim(SearchWord(ix))) > 0 Then
If InStr(1, SearchWord(ix), sWord, 1) > 0 Then
flg = True
Exit For
End If
End If
Next
fSearchWord = flg
End Function
'-------------------------------------------

こんにちは。

コードの細かい部分の目的としている部分は良く分からないけれども、少し直してみました。あくまでも、VBSです。元のコードは、ちょっと違うようです。

'-------------------------------------------

Set WSHFso = CreateObject("Scripting.FileSystemObject")
'Set WshShell = CreateObject("WScript.Shell") '??
Dim strSearchWord
dim i
'-------------------------------------------
Public Const FileName ="C:\AAA.txt"
Public Const sWord =""test"
'---------------------...続きを読む

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

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

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

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

Aベストアンサー

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

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

区別するなら、

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

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:\

QVBA オブジェクトが空かどうか判定する

皆様のお知恵を拝借させてください。

エクセルVBAでオブジェクトを入れる変数を定義し、その変数にオブジェクト
が入っているかどうか検査したいのですがどうしたらいいでしょうか。

例えば---
Dim a As Workbook
If a <> nothing then ←この部分が分からない。このままだとエラー。
処理
End if
---------
環境
エクセル2003
WinXPsp1

Aベストアンサー

もし、aが空だったら
If a Is Nothing Then 

もし、aが空じゃなかったら
If Not a Is Nothing Then


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

人気Q&Aランキング