スペースを含むパスを扱う方法

スペースを含むパスを扱う方法

- myu myo の投稿
返信数: 9

https://okumuralab.org/tex/mod/forum/discuss.php?d=1571
このページで質問したのですが
パス名の中にスペースが含まれている場合にはどうしたら良いですか?
普通は""で囲めばうまくいくはずなのですが
この場合にはうまくいきません。

どうすれば良いでしょうか?

myu myo への返信

Re: スペースを含むパスを扱う方法

- aminophen の投稿
手元にPCがないのですが、もう一つの常套手段はMSDOS8.3記法です。

http://www.atmarkit.co.jp/fwin2k/win2ktips/606dirx/dirx.html

platex などで試したことないですが…やってみては?

# TeX と本質的には関係なさそうですし、聞く前にちょっと調べてみては? と思ってしまいます。
昨日のフルパスの件も然り。
aminophen への返信

Re: スペースを含むパスを扱う方法

- aminophen の投稿
コマンドプロンプトでスペース有りのパスを指定する、ということを試してみましたが、
普通に "" で囲む方でも MSDOS8.3 でもうまくいきます。
あとは VB スクリプトの仕様とかの問題ではないでしょうか。
aminophen への返信

Re: スペースを含むパスを扱う方法

- myu myo の投稿
VBSではなくbatファイルで実行しています。

platex -output-directory=D:\ D:\ddd.tex
だとうまくいくのに

platex -output-directory="D:\" "D:\ddd.tex"
だと
restricted \write18 enabled.
Please type the name of your input file.
というエラーが出てうまくいきません。
 
myu myo への返信

Re: スペースを含むパスを扱う方法

- aminophen の投稿
platex -output-directory="C:" "C:\test.tex"

だとうまくいきませんか?(ディレクトリの最後の\をとる)

追記 C:\ や D:\ 直下だとうまくいかないかもしれませんが、いま再び手元にPCがないので試せません。
aminophen への返信

Re: スペースを含むパスを扱う方法

- myu myo の投稿
ありがとうございます。

batファイルでは
platex -output-directory="D:" "D:\ddd.tex" & platex -output-directory="D:" "D:\ddd.tex"


でうまくいきました。

しかし、同じ事をVBAでやりたいのですが

strShellCommand = "platex -output-directory=""D:"" ""D:\ddd.tex"" "

だとうまくいくのですが、二回実行するために

strShellCommand = "platex -output-directory=""D:"" ""D:\ddd.tex"" & platex -output-directory=""D:"" ""D:\ddd.tex"" "


objWSH.Run strShellCommand, 8, True

とやっても何も実行されません。

なぜでしょうか?
 
myu myo への返信

Re: スペースを含むパスを扱う方法

- aminophen の投稿
もはや TeX と関係なくなりましたね…
というわけでここ以外で聞いた方が解決は早いと思います。

それから、今後のために。
技術系コミュニティでプログラミングの質問をする割には、とりあえずヘルプメッセージ (platex -help) を読んでみたり、
一度は聞く前にできるかぎり試してみたりという気概が足りないのではないかと思います。
具体的なソースや「実行したらこんなエラーが出た」等を開示しなければピントのずれた回答しか得られません。
もう少し努力がみられたほうが回答する側も気持ちのいいものです。
aminophen への返信

Re: スペースを含むパスを扱う方法

- Akira Kakuto の投稿
話題を追っていませんが, TeX に関するところでは
ディレクトリ セパレータは \ ではなくて,/
(forward slash) を使って下さい。
myu myo への返信

Re: スペースを含むパスを扱う方法

- 山本 和義 の投稿
ふーむ,なるほど.WSH はよう知らんので独り言です.
cmd等を呼んでいるわけではないので「&」の解釈はされずに

platex -output-directory=D: D:\ddd.tex 無視される文字列

となっているわけか.1回目の platex は処理されているはず.それだけ.