Alex_Piggy
Advanced Member | Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору dialmak Цитата: Естественно. Потому что Вывод ftp /? идёт в stderr, а не в stdout | К сожалению, для меня это не естественно. Потому что а) 7 строка - это "$line = StdoutRead($foo)" а 13 строка - "$line = StderrRead($foo)". То есть по логике один msgbox должен быть с содержимым StdOut, а второй - StdErr. Можно проверить, предположив, что StdErr - второй поток и набрав команду Local $foo = Run(@ComSpec & " /c ftp /?", @SystemDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD). Результат - с подписью "StdOut read" - один пустой, второй с "123", и с подписью "StdErr read" - один с "456" б) Я уже упоминал, что "ftp /? 1>1.txt 2>2.txt 3>3.txt 4>4.txt 5>5.txt 6>6.txt 7>7.txt 8>8.txt 9>9.txt" дает только пустые файлы. Попробуйте, пожалуйста выполнить эту команду из командной строки у себя - думаю, что справка будет в 2.txt. Скорее всего поведение команды ftp изменили между Vista и Win7, как изменили между XP и Vista. И, наверное, у runas тоже могли поменять... Не знаю, что использовать для testcase. Можете пожалуйста попробовать - запуститься/не запустится у Вас ftp.exe от Vista? И как себя будет вести? Цитата: Убрать пустышку легко сделав проверку и перенаправив вывод $STDERR_MERGED | Так я получаю или пустышку или вообще ничего... |