我正在尝试制作一个程序,它会将我的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
任何想法?提前谢谢!
答案 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