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")
以上、宜しくお願い致します。
>ファイル内容,ファイルサイズが違ってしまいます。
どのように違うのでしょうか?
Shell関数はコマンドの実行終了を待ちません。
この場合、dirを実行中でも、次の行の命令を実行してしまいます。
dirの実行結果をファイルに出力して、そのファイルを読んで...
というような処理目論んでいるのであれば、おそらく上記理由で失敗するでしょう。
上記でビンゴであれば、
WSHShell.Runメソッドを代わりに使ってみてください。
http://madia.world.coocan.jp/vb/vb_bbs/200302_03020040.html
どのように違うかというのご説明いたします。
DOSプロンプトで直接実行しますと、
C:\Documents and Settings\Administrator\Local Settings\Temporary Internet Files
以下のファイルも取得できます。
VBのShell関数を使用しますと、上記のフォルダが取得できません。
以上、宜しくお願い致します。
>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
もげ様 ご回答有難うございます。
無事解決できました。
今後とも何卒宜しくお願い致します。
ツイート | ![]() |