Как записать вывод команды cmd tree, используя задачу Apache Ant exec? - PullRequest
2 голосов
/ 10 мая 2010

Я пытаюсь записать вывод команды cmd tree с помощью команды ant:

    <exec dir="${basedir}" executable="cmd" output="output.txt">
        <arg value="tree" />
    </exec>

Однако в "output.txt" я вижу следующее:

    Microsoft Windows XP [Version 5.1.2600]
    (C) Copyright 1985-2001 Microsoft Corp.

Когда я запускаю команду в windows cmd:

    C:\tree>tree 

Я получаю что-то вроде:

    C:\tree
        └───test
            └───test

Может кто-нибудь сказать мне, как написать сценарий Ant для печати древовидной структуры в файл?

Ответы [ 2 ]

4 голосов
/ 10 мая 2010

Вы пытаетесь выполнить tree.com. Из документации exec :

[...] В частности, если не поставить только расширение файла на исполняемом файле ".EXE" файлы ищутся, а не ".COM", ".CMD" или другие типы файлов перечислены в переменной среды PATHEXT. Это используется только оболочки.

Вам нужно позвонить tree.com явно.

<exec dir="${basedir}" executable="tree.com" output="output.txt" />

Другой способ - указать /C параметр cmd, вот что у меня сработало:

<exec dir="${basedir}" executable="cmd" output="output.txt">
    <arg value="/C" />
    <arg value="tree" />
</exec>
1 голос
/ 10 мая 2010

(догадываюсь, я не пользователь Ant)

Если вы наберете

cmd tree

в командной строке вы также не увидите больше, чем

Microsoft Windows [Version 6.1.7600]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

Как насчет просто выполнить tree?

<exec dir="${basedir}" executable="tree" output="output.txt"/>  
...