ファイル名に % とか ! とかある時に微妙に困ってます。
例えば、ディレクトリ構成・ファイルの内容が次のようになってたとします。
■ディレクトリ %CD%.txt a.bat ■%CD%.txt の内容 kashira ■a.bat type %1
単純ですね。 a.bat の第1引数で与えられたファイルを単に表示するだけです。
んじゃぁ。"%CD%.txt" を a.bat で表示しようとした際、どーすりゃいいのか!…ってのがさっぱりだったりします。
c:\c>a.bat %CD%.txt c:\c>type c:\c.txt 指定されたファイルが見つかりません。 # %% にしてエスケープしてみる c:\c>a.bat %%CD%%.txt c:\c>type %c:\c%.txt ファイル名、ディレクトリ名、またはボリューム ラベルの構文が間違っています。 # ダブルコーテーションで囲ってみる? C:\c>a.bat "%CD%.txt" C:\c>type "C:\c.txt" 指定されたファイルが見つかりません。 # \でエスケープだ! C:\c>a.bat \%CD\%.txt C:\c>type \%CD\%.txt 指定されたパスが見つかりません。
さて、どうしたもんか…
ファイル名に % とか ! とかは使わないはナシで(ぉ
早速反応が!
http://twitter.com/rozen_acgin/status/87427675836252160
C:\c>a.bat ^%CD^%.txt C:\c>type %CD%.txt kashira
おおお!すごい! これは初めて知った! これは thx! です! twitter すごい!
あとは、このエスケープを自動化できれば…。例えばこんな感じ
■ディレクトリ %CD%.txt tenshi.txt list.txt a.bat ■list.txt の中身 // つまりはファイル名一覧 %CD%.txt tenshi.txt ■ 一度に表示してみる C:\c>for /f "delims=" %f in (list.txt) do call a.bat %f C:\c>call a.bat %CD%.txt C:\c>type C:\c.txt 指定されたファイルが見つかりません。 C:\c>call a.bat tenshi.txt C:\c>type tenshi.txt misya
…あぁまぁですよねー(苦笑 orz
list.txt 内の %CD%.txt を ^%CD^%.txt にしたら正常に表示できたので、bat に流す前に何とかしてエスケープしないとダメっぽいですなぁ。 むむむ…