DOSのtreeコマンドの表示結果から、パスを組み立てる方法はありませんか?

またはdir /S /B /A:D の結果からツリーを組み立てる方法はありませんか?
バッチファイルでなるべくシンプルな方法が良いです。
例)
C:.
├─hoge
│ └─abc
└─foo
  └─bar
   ↑
   ↓
C:\hoge\abc
C:\foo\bar
※上記はすべてディレクトリです。

OSは、XPです。

回答の条件
  • URL必須
  • 1人1回まで
  • 登録:
  • 終了:2006/12/22 10:02:38
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:mutsuju No.1

回答回数551ベストアンサー獲得回数35

冗長なような気もしますけどこんなバッチファイルを書いたら動きました。

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

id:P-mako

ちょっと要件とは違うような気がします。

テキストベースで構わないのでツリー表示したいんです。

それと私の環境だけで実行するとは限らないのでgrepやsedはなるべく使わない方法を探しています。(grepやsedがOS標準だといろいろ幅が広がるんですがねー)

2006/12/21 11:36:15
id:utagawh No.2

回答回数114ベストアンサー獲得回数3

http://www.yahoo.co.jp

urlはダミー

コマンドプロンプトで下記を実行

バッチファイル中で用いるときは%は2つ重ねて%%とします。

for /r d:\ %i in (*.doc) do echo %i>>foo.txt

/rの次で指定したドライブ・ディレクトリ以下に存在する

()内の条件にヒットしたファイルのフルパス名がfoo.txtに

出力されます。

id:P-mako

えーと、同じことは、質問文にもヒントはあるんですが、

dir /S /B *.doc > hoge.txt

で可能なんです。

※検索対象ディレクトリに移動してから実行が必要ですが。

質問が悪かったのかもしれません。

1.すでにtreeコマンドの結果がある場合に、そこから、フルパスを組み立てる方法

2.フルパスの一覧(今回お二人に回答いただいた出力結果)がある場合に、そこからツリー展開する方法

のどちらかを実現したいんです。

バッチファイルのみでは難しいのは承知の上なんですが・・・

2006/12/21 11:45:15

コメントはまだありません

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません