
Я нахожусь в командной строке Windows 7. Когда я запускаю следующую команду
"C:\Program Files\abc.exe" help > out.txt
abc.exe — это сторонняя программа, которая отображает некоторую информацию. Происходит следующее: открывается новое окно, abc.exe help печатает вывод в новом окне, затем окно закрывается, и я возвращаюсь в исходное окно. Файл out.txt остается пустым.
Как запретить abc.exe открывать новое окно? Могу ли я заставить его отображать свой вывод в том же исходном окне, чтобы его можно было перенаправить в out.txt.
решение1
Мне удалось решить эту проблему.
В Windows есть опция "Открыть командную строку от имени администратора". Новое окно в этом случае не открывается.
решение2
Возможно, приложение не выводит данные в STDOUT или STDERR, но попробуйте это
"C:\Program Files\abc.exe" help > out.txt 2>&1
решение3
У меня была та же проблема, запуск от имени администратора решил бы проблему, но это не могло быть приемлемым ответом, так как у не-администраторов тоже была эта проблема. Идея перенаправления вывода не помогла, потому что она перенаправляла вывод из приглашения без повышенных прав, в котором не было вывода. Поэтому он просто создает пустой файл.
Моя проблема заключалась в том, что .exe, который я вызывал, был настроен на запуск с повышенными правами. Командная строка, из которой я запускал, не была запущена как администратор, и ее нельзя было повысить после запуска. Поэтому она запускала новое окно с повышенными правами для запуска команды, которая завершалась в мгновение ока, а затем закрывалась, оставляя меня с моей неповышенной командной строкой без вывода.
Решение A: Запустите cmd/powershell от имени администратора. Тогда он сможет работать в том же окне. Решение B: Измените .exe так, чтобы он не запускался от имени администратора, чтобы ему не нужно было запускать новое окно с повышенными правами. Это тот вариант, который я выбрал.