出来るのだASP Q&A掲示板(過去LOG)
訪問数 52046
昨日 889
今日 776 【PR】 パソコン入門からIT専門書まで幅広く取り揃えています。セブン-イレブン受取り手数料無料のセブンアンドワイ。 |
![]() ![]() ![]() ![]() ![]() |
![]() ![]() |
![]() ![]() ![]() ![]() |
[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 |