またはdir /S /B /A:D の結果からツリーを組み立てる方法はありませんか?
バッチファイルでなるべくシンプルな方法が良いです。
例)
C:.
├─hoge
│ └─abc
└─foo
└─bar
↑
↓
C:\hoge\abc
C:\foo\bar
※上記はすべてディレクトリです。
OSは、XPです。
冗長なような気もしますけどこんなバッチファイルを書いたら動きました。
dir /ad/s > dir.txt
grep " のディレクトリ" dir.txt > temp1.txt
sed -e 's/ のディレクトリ//' -e 's/^ //' temp1.txt > result.txt
材料
grep
http://www.vector.co.jp/soft/dos/util/se008484.html
sed
http://www.vector.co.jp/soft/dos/util/se000880.html
以下ご参考
dir.txtの内容(一部略)
C:\cmds>more dir.txt
ドライブ C のボリューム ラベルは ******* です
ボリューム シリアル番号は ******** です
C:\cmds のディレクトリ
2006/12/20 17:44 <DIR> .
2006/12/20 17:44 <DIR> ..
2006/07/06 06:51 <DIR> 3pg-conv
2005/07/14 09:59 <DIR> binedit
2005/12/13 18:10 <DIR> cldx
2005/07/14 09:59 <DIR> Emigrant
temp1.txtの内容
C:\cmds>more temp1.txt
C:\cmds のディレクトリ
C:\cmds\3pg-conv のディレクトリ
C:\cmds\3pg-conv\3GP_Converter034 のディレクトリ
C:\cmds\3pg-conv\3GP_Converter034\cores のディレクトリ
result.txtの内容
C:\cmds>more result.txt
C:\cmds
C:\cmds\3pg-conv
C:\cmds\3pg-conv\3GP_Converter034
C:\cmds\3pg-conv\3GP_Converter034\cores
urlはダミー
コマンドプロンプトで下記を実行
バッチファイル中で用いるときは%は2つ重ねて%%とします。
for /r d:\ %i in (*.doc) do echo %i>>foo.txt
/rの次で指定したドライブ・ディレクトリ以下に存在する
()内の条件にヒットしたファイルのフルパス名がfoo.txtに
出力されます。
えーと、同じことは、質問文にもヒントはあるんですが、
dir /S /B *.doc > hoge.txt
で可能なんです。
※検索対象ディレクトリに移動してから実行が必要ですが。
質問が悪かったのかもしれません。
1.すでにtreeコマンドの結果がある場合に、そこから、フルパスを組み立てる方法
2.フルパスの一覧(今回お二人に回答いただいた出力結果)がある場合に、そこからツリー展開する方法
のどちらかを実現したいんです。
バッチファイルのみでは難しいのは承知の上なんですが・・・
ちょっと要件とは違うような気がします。
テキストベースで構わないのでツリー表示したいんです。
それと私の環境だけで実行するとは限らないのでgrepやsedはなるべく使わない方法を探しています。(grepやsedがOS標準だといろいろ幅が広がるんですがねー)