VB DOSコマンド 実行について

解決


たずね人  2006-06-13 21:43:39  No: 95733

DOSプロンプトで下記のコマンドを実行すると成功するのですが、
VBでShell関数で実行すると処理はされるのですが、ファイル内容,ファイルサイズが違ってしまいます。
ご教授お願い致します。

[DOSプロンプトでの実行内容]
dir c:\ /s/b/a-d >c:\test.txt

[VBでの実行内容]
Call Shell("Command.com /c dir c:\ /s/b/a-d >c:\test.txt")

以上、宜しくお願い致します。


もげ  2006-06-13 22:15:33  No: 95734

>ファイル内容,ファイルサイズが違ってしまいます。

どのように違うのでしょうか?

Shell関数はコマンドの実行終了を待ちません。
この場合、dirを実行中でも、次の行の命令を実行してしまいます。
dirの実行結果をファイルに出力して、そのファイルを読んで...
というような処理目論んでいるのであれば、おそらく上記理由で失敗するでしょう。

上記でビンゴであれば、
WSHShell.Runメソッドを代わりに使ってみてください。
http://madia.world.coocan.jp/vb/vb_bbs/200302_03020040.html


たずね人  2006-06-13 23:19:38  No: 95735

どのように違うかというのご説明いたします。
DOSプロンプトで直接実行しますと、
C:\Documents and Settings\Administrator\Local Settings\Temporary Internet Files
以下のファイルも取得できます。
VBのShell関数を使用しますと、上記のフォルダが取得できません。

以上、宜しくお願い致します。


もげ  2006-06-14 00:51:37  No: 95736

>C:\Documents and Settings\Administrator\Local Settings\Temporary Internet Files
ということは、実行環境はWin2000/XPですよね。

この場合、たずね人殿は、
「DOSプロンプト(Command.com)」と「コマンドプロンプト(cmd.exe)」
を混同されている可能性があります。

結論的には、コマンドプロンプトでの
dir c:\ /s/b/a-d >c:\test.txt
と、
Call Shell("cmd.exe /c dir c:\ /s/b/a-d >c:\test.txt")
が等価になります(当方環境Win2000SP4で確認済み)。

詳細はVBの話題から外れますので、下記をどうぞ。
http://homepage2.nifty.com/winfaq/wxp/hints.html#1202


たずね人  2006-06-14 01:49:27  No: 95737

もげ様  ご回答有難うございます。
無事解決できました。
今後とも何卒宜しくお願い致します。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加