tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板 [ツリー表示へ]   [Home]
一括表示(VB6.0)
タイトルパスにスペースがある場合
記事No14984
投稿日: 2010/10/24(Sun) 01:14
投稿者クロ
先日以下の方法を教えていただきましたが、実行ファイルをフォルダに入れた場合
フォルダ名にスペースがあるとうまく実行できません。

Shell Environ("COMSPEC") & " /C C:\HENKAN.EXE ""ABCDE"" > C:\HENKANout.txt", vbNormalFocus

以下のようにChr$(34)で囲んでもだめでした。

MyFile = Chr$(34) & " /C C:\A AA\HENKAN.EXE ""ABCDE"" & Chr$(34)
Shell Environ("COMSPEC") & MyFile & " > C:\HENKANout.txt", vbNormalFocus

対処方法はありますでしょうか。

[ツリー表示へ]
タイトルRe: パスにスペースがある場合
記事No14985
投稿日: 2010/10/24(Sun) 07:25
投稿者よろずや
> 以下のようにChr$(34)で囲んでもだめでした。
>
> MyFile = Chr$(34) & " /C C:\A AA\HENKAN.EXE ""ABCDE"" & Chr$(34)
> Shell Environ("COMSPEC") & MyFile & " > C:\HENKANout.txt", vbNormalFocus

全体を囲むのではなく、パスの部分だけを囲みましょう。
Shell Environ("COMSPEC") & " /C ""C:\A AA\HENKAN.EXE"" ""ABCDE"" > C:\HENKANout.txt", vbNormalFocus

[ツリー表示へ]
タイトルRe^2: パスにスペースがある場合
記事No14986
投稿日: 2010/10/24(Sun) 21:52
投稿者クロ
よろずやさん ありがとうございます。

> 全体を囲むのではなく、パスの部分だけを囲みましょう。
> Shell Environ("COMSPEC") & " /C ""C:\A AA\HENKAN.EXE"" ""ABCDE"" > C:\HENKANout.txt", vbNormalFocus

パラメータ""ABCDE""の必要としないプログラムではうまく動きましたが
パラメータがあるものはコマンドとして認識しないようでだめでした。

ちなみにコマンドプロンプトを開いて以下のように入力しましたらリダイレクトまで
うまくできました。
C>\"C:\A AA\HENKAN.EXE" "ABCDE" > C:\HENKANout.txt

パラメータ付きでうまく動かす方法、他にありましたら教えてください。

[ツリー表示へ]
タイトルRe^3: パスにスペースがある場合
記事No14989
投稿日: 2010/10/24(Sun) 23:45
投稿者魔界の仮面弁士
> パラメータ""ABCDE""の必要としないプログラムではうまく動きましたが
> パラメータがあるものはコマンドとして認識しないようでだめでした。
コマンドラインの解釈方法は、そのアプリケーションに依存しています。
コマンドプロンプトで、「cmd /c」を実行してみてください。
cmd.exe が引用符をどのように解釈するのかが記載されています。
http://pckida.web.fc2.com/com/CMD.html

そのほか、エスケープ仕様について下記も参照してみてください。
http://www.f3.dion.ne.jp/~element/msaccess/AcTipsGetDosResult.html
http://bit.ly/9ROhH5


> パラメータ付きでうまく動かす方法、他にありましたら教えてください。
案1) ショートファイル名(8文字+拡張子3文字)での指定に切り替える。
案2) *.cmd ファイル(ないしは *.bat ファイル)経由で呼び出してみる。

[ツリー表示へ]
タイトルRe^4: パスにスペースがある場合
記事No14994
投稿日: 2010/10/26(Tue) 07:39
投稿者クロ
魔界の仮面弁士さん ありがとうございます

> コマンドプロンプトで、「cmd /c」を実行してみてください。
> cmd.exe が引用符をどのように解釈するのかが記載されています。
> http://pckida.web.fc2.com/com/CMD.html

/kで表示を表示を消さないようにしたところ、すでにリダイレクトでファイルを
セーブしたいスペースの入ったディレクトリ名のところにが移っており、
パスなしですべて記載したところうまくいきました。

スペース入りのパスを記載しての動作がうまく言ったわけではありませんが
今回の目的は達しました。

パスの表記方法、リダイレクトの動かし方等いろいろ勉強できました。
重ねて御礼申し上げます。

[ツリー表示へ]