出来るのだASP Q&A掲示板(過去LOG)  訪問数 52046 昨日 889 今日 776
    【PR】 パソコン入門からIT専門書まで幅広く取り揃えています。セブン-イレブン受取り手数料無料のセブンアンドワイ。
Topに戻る 掲示板に戻る 検索 削除 管理者

cmd /cで呼び出したコマンド結果のリダイレクト   norifさん [2002/08/27 22:11:34] [2566]
  Re:cmd /cで呼び出したコマンド結果のリダイレクト   北岳さん [2002/08/28 17:16:27] [2577]
    Re:cmd /cで呼び出したコマンド結果のリダイレクト   norifさん [2002/08/28 23:36:42] [2583]
      やった!ピタリをゲット!   北岳さん [2002/08/29 10:52:59] [2584]
        うまく取得できました。   norifさん [2002/08/29 16:41:11] [2587]

[2566] cmd /cで呼び出したコマンド結果のリダイレクト
投稿者:norifさん 2002/08/27 22:11:34
norifと申します。

ファイルの比較結果を出力するのにWSHのオブジェクトを使用して
以下のようにfcコマンドの起動を試みました。

Set WSHobj = Server.CreateObject("WScript.Shell")
strRetCode = WSHobj.Run("cmd.exe /c c:\winnt\system32\fc.exe c:\test1.txt c:\test2.txt >>c:\test3.txt", 1, TRUE)
Set WSHobj = Nothing


しかし出力結果をファイルにリダイレクトしようとしましたが、うまく
ファイルに出力されません。

恐らく、cmdコマンド自体の出力結果がリダイレクトされたのではと
思いますが、cmd /cで呼んだコマンド自体の結果をうまく取得する
にはどうしたらよいでしょうか?

あるいは、別の方法で2つのファイルの比較結果を別のファイルに
出力する方法(ASPのオブジェクトなので)があれば、どなたかご教授くださいませ。

[2577] Re:cmd /cで呼び出したコマンド結果のリダイレクト
投稿者:北岳さん 2002/08/28 17:16:27
WSHのRUN:
お示しのコードのままで、NT4Server+ASP2で正常動作しました。
 
自分の環境ではWSHは、よく詰めていませんが時々動かなくなることがあるので、私はふつうは
ASPEXEC.dllのExecute:
を使いますが、そちらでも正常動作しました。
なお、
BASP21.DLLのEXECUTE:
は未確認です。

[2583] Re:cmd /cで呼び出したコマンド結果のリダイレクト
投稿者:norifさん 2002/08/28 23:36:42
norifです。

お返事ありがとうございました。

> WSHのRUN:
> お示しのコードのままで、NT4Server+ASP2で正常動作しました。
>  
> 自分の環境ではWSHは、よく詰めていませんが時々動かなくなることがあるので、
私はふつうは
> ASPEXEC.dllのExecute:
> を使いますが、そちらでも正常動作しました。
> なお、
> BASP21.DLLのEXECUTE:
> は未確認です。

北岳さんの環境ではきちんと動作されるようですね。

前回の書き込みでは詳細な環境等示していなかったので、以下に
記述致します。

【動作環境】
Windows2000 Server SP3 + IIS + ASP
及び
Windows2000 Professional SP3 + IIS + ASP
※すいません、IISとASPは、どこでバージョンの確認をするか
わからないので記載しておりません。どこで確認できるので
しょうか・・・。。。

【検証内容】
1.WSHでの検証

Set WSHobj = Server.CreateObject("WScript.Shell")

strRetCode = WSHobj.Run("cmd.exe /c c:\winnt\system32\fc.exe c:\test1.txt c:\test2.txt >> c:\test3.txt", 1, TRUE)

Set WSHobj = Nothing


2.ASPEXECのexecuteでの検証

Set ExeObj = Server.CreateObject("ASPExec.Execute")

ExeObj.Application = "cmd.exe"
ExeObj.Parameters = "/C c:\winnt\system32\fc.exe c:\test1.txt c:\test2.txt >> c:\test3.txt
strOutput = ExeObj.ExecuteDosApp

Set ExeObj = Nothing


3.BASP21のexecuteでの検証

Set Bobj = Server.CreateObject("Basp21")

strRetCode = Bobj.Execute("cmd.exe /c c:\winnt\system32\fc.exe c:\test1.txt c:\test2.txt >> c:\test3.txt", 1, strOutput)

Set Bobj = Nothing

【結果】
1.上記3つの全ての方法でtest3.txtファイルは作成される。
2.test3.txtファイルの中身は空っぽ。
(fcコマンドでの比較結果はtest3.txtファイルに出力されていない。)

ちなみに、"dir"や"net view"コマンドで試した場合、きちんと
出力されます。

上記結果と岳北さんのご回答から察するに環境によるものなのかと
考えているところです。

もしかして出たばっかりのSP3が悪さをしているのでしょうか。。。

どなたか私と同様の環境でもきちんとfcコマンドの結果が出力
されるのか、ご確認できる方がいるとありがたいのですが。。。


[2584] やった!ピタリをゲット!
投稿者:北岳さん 2002/08/29 10:52:59
(表題の意味)
出来るのだASP 掲示板  訪問数 100000 昨日 592 今日 45
 
昨年9月は7000件くらいだったのに・・・
 
-----
>自分の環境ではWSHは、よく詰めていませんが
 
環境の意味は、
(1) IISやASPのバージョン
(2)サーバで同時に立ち上がっている他のアプリ(特にウイルスチェッカー)との干渉
(3)フォルダのパーミッション設定
などありますが
 
>ちなみに、"dir"や"net view"コマンドで試した場合、きちんと
>出力されます。
だと、書き込み可能なので(2)と(3)は無関係らしいですね。
 
------
>※すいません、IISとASPは、どこでバージョンの確認をするか
>わからないので記載しておりません。どこで確認できるので
>しょうか・・・。。。
 
ASPのバージョンは推定です。
BABA CENTERFOLDSの最近ログ
http://www.bea.hi-ho.ne.jp/cgi-bin/user/byoko/bnews?f=b&p=27642
 
[B] バージョンの調べかた ( 2002/08/26 10:47 YOUさんから)
>IISとASPのバージョンの調べ方を教えてください。
 
に記載があります。
 
----
ご提示のコードでWSHは成功、basp21は失敗。
私はexe起動はASPEXEC使用か、ActiveX-DLL自作なので、あまり詰める気はありません。
ところが今まで起動に失敗した経験なしのASPEXECで失敗したので、比べてみたら、
 
************
<h3>2.ASPEXECのexecuteでの検証</h3>
<%
Set ExeObj = Server.CreateObject("ASPExec.Execute")
x1="cmd.exe"
x2="/c c:\winnt\system32\fc.exe d:\a1.txt d:\a2.txt>d:\b2.txt"
response.write "<p>" & x1 & " " & x2
ExeObj.Application = x1
ExeObj.Parameters = x2
ExeObj.ShowWindow = false '追加
'strOutput = ExeObj.ExecuteDosApp  '■失敗
strOutput =ExeObj.ExecuteWinApp '■成功
response.write "<p>ret=" & strOutput
Set ExeObj = Nothing
%>

[2587] うまく取得できました。
投稿者:norifさん 2002/08/29 16:41:11
たびたびお返事ありがとうございます。

北岳さんの試された内容で試したところ、うまくfcコマンドの結果が
取得できました。どうもありがとうございました。

しかし、原因がなんだったのか、ちょっと謎です。

>ExeObj.ShowWindow = false '追加
>'strOutput = ExeObj.ExecuteDosApp  '■失敗
>strOutput =ExeObj.ExecuteWinApp '■成功

やはり上記部分に起因するのでしょうか。fcはDOSコマンドだと
思ってExecuteDosAppで起動していたのですが。。。

なんにせよとりあえず動いたのでよかったです。
どうもありがとうございました。



TreeBBS For ASP V.0.1.3
Program By YasNet