何故か今頃になりVisual Basic 6.0を絶賛使用中の今日此頃。
出力したデータファイルをマージする処理があり、データファイルの一覧を取得するために
strCommand = "Command.com /C Dir /B " & findString & " > " & listFile
taskID = Shell(strCommand, vbMinimizedNoFocus)
とコードを実装してみた。このときに、findStringにスペースを含まないディレクトリを指定したときには正常にlistFileに検索したファイル名を出力してくれるが、スペースを含むディレクトリを指定したらサイズ0のlistFileを出力してしまう。
勿論のことであるが、findStringにスペースを含むディレクトリを指定した場合は、ディレクトリ名をダブルクォーテーションで括っている。然し何故か正常に動作しない。
悩むこと数時間...。ググッてみたら、Command.comじゃなくて
strCommand = Environ("ComSpec") & " /C Dir /B " & findString & " > " & listFile
taskID = Shell(strCommand, vbMinimizedNoFocus)
上記のようにEnviron関数を使うと間違いないことが判った。因みにEnviron関数だとCommand.comではなくCmd32.exeが起動され、スペースを含むディレクトリでも検索が正常に実行できた。
おい、こら!某300の技を書いた奴、俺の時間を返せと胸の中で罵ったひととき。
0 件のコメント:
コメントを投稿