树批处理 - 循环输出

时间:2016-10-05 20:16:32

标签: batch-file tree text-files file-writing

我正在尝试制作一个程序,它会将我的C:驱动器树作为批处理文件提供给我.txt文件。程序运行时,将以下内容打印到文本文件tree.txt:

C:\>cd C:\ 

C:\>tree /a  1>>tree.txt 

C:\>cd C:\ 

C:\>tree /a  1>>tree.txt 

C:\>cd C:\ 

C:\>tree /a  1>>tree.txt 

这很奇怪,因为它会无限期地继续打印并将整个代码打印到文件而不是树。我的代码如下:

cd C:\
tree /a >> tree.txt

任何想法?提前谢谢!

2 个答案:

答案 0 :(得分:0)

您有两个问题:代码在运行时显示,代码在无限循环中运行。

<强> 1。您的代码正在显示
默认情况下,批处理显示在运行该代码行之前运行的每行代码。

要禁用此功能,请将命令@echo off放在脚本的顶部。 echo off禁用此行为,@会阻止显示该行。

<强> 2。您的代码在无限循环中运行
由于您的代码只包含问题中的两行,因此代码在无限循环中运行的唯一可能原因是您的脚本名为tree.bat

由于CMD运行命令的方式,您的脚本名称会导致无限循环。当您调用命令并且不提供该命令的完整路径时,批处理首先查找当前目录,然后查找%PATH%变量中列出的所有目录。因为当前目录中有一个名为tree(您的脚本)的可执行文件,批处理假定您正在尝试调用它并再次运行脚本,从而导致无限循环。

要停止此行为,请重命名脚本,确保不要将其称为批量关键字(可以找到批量关键字列表here)。

答案 1 :(得分:0)

如果您确实想要命名批处理文件树,可以将pathext var设置为.com。

@echo off & setlocal
set pathext=.com
tree C:\ /a>>tree.txt

然后你不会以递归方式调用批处理文件。

或者,只需运行此命令,不要使用批处理文件:

tree C:\ /a>>tree.txt