2017-02-01 6 views
0

をリストアップしている私は、次のコードを使用してバッチファイルtree.batを書いた:木バッチファイル:ツリー/ Fのみカレントディレクトリに

foo1 
    file1 
    file3 
    file3 
foo2 
    file1 
    file2 
    tree.bat 
foo1 
    file1 
    file2 
    file3 
を以下ました:

set output_loc=Z: 
set loc=Z: 
chdir /d %loc% & tree /f > "%output_loc%\tree.txt" 

は、ドライブZが言ってみましょう

私がtree.batを実行すると、次の出力がZ:\ tree.txtに出力されます

Folder PATH listing for volume storage1 
Volume serial number is C508-09ED 
Z:. 
    file1 
    file2 
    tree.bat 
No subfolders exist 

は、どのように私は、ツリー全体を得るのですか?

+2

変数をドライブ装置に設定していますが、フォルダを指定していません。 Z:をZ:\ –

+4

に置き換えてみてくださいおそらくバッチファイルの名前をツリー以外の名前に変更すると、問題が発生する可能性があります。 – geisterfurz007

答えて

0

内部または外部コマンドのようにバッチファイルの名前を付けないでください。さもなければ、あなたの場合のように、コマンドインタープリタは混乱します。

現在使用しているコマンドのtree(ファイル名tree.com)がカレントディレクトリで最初に検索され、見つからなければ、環境変数PATHで指定されたディレクトリで検索されます。実行可能ファイル拡張子は、環境変数PATHEXTから取得されます。これは、意図せずにバッチファイルtree.batが再実行しようとしていることを意味します。また


MC NDcommentに従い、Z:は、ドライブの現在のディレクトリを指定するよう、あなたの例に係るZ:\foo2であるように思われ、ドライブZ:のルートディレクトリを指定するZ:\Z:を置き換える(これバッチファイルを含むディレクトリです)。

+0

.batファイルの名前をtest.batに変更すると同じ結果が得られますが、 'loc'変数をZ:からZ:\に変更すると期待される結果が得られます。 @MC NDのおかげで –

関連する問題