Показать полную графическую версию : [решено] Откуда вывод лишней строки?
apozlevich
18-09-2013, 15:27
Добрый день, форумчане. Наконец-то я смог поймать этот баг в одной строке.
for /f "skip=1 delims=" %%i in ('ftp -v -i -s:fx-ftp.txt ftp.mozilla.org') do (echo %%i| findstr /b /r "Firefox Setup .*" | findstr /v ".*Stub.*")
К слову, этот код возвращает имя файла последней беты Firefox, то есть фильтрует листинг директории по FTP и собственно, сами команды FTP. Но выводит он
Firefox Setup 24.0b10.exe
quit
quit - это строка из файла fx-ftp.txt и, следуя логике, как и все остальные строки, она не должна выводиться из-за findstr /b /r "Firefox Setup .*".
Да, временное решение проблемы if not "%%i"=="quit", но выглядит это как-то костыльно.
Надеюсь, вы поможете мне понять, в чем дело.
fx-ftp.txtanonymous
ilovefx
cd /pub/firefox/releases/latest-beta/win32/ru/
ls
quit
Foreigner
18-09-2013, 18:03
Так?
@echo off
(
echo cd /pub/firefox/releases/latest-beta/win32/ru
echo ls
echo quit
) | 2>nul ftp -A ftp.mozilla.org | findstr /v "Stub"
apozlevich
18-09-2013, 18:26
Foreigner, странно все это. В доках сказано не использовать поток, а использовать файл. Ну да ладно, попробовал с ключами -v -i, ничего не получилось, даже не залогинилось. С -a просило залогиниться, а вот с -A (всегда считал, что у нативных виндусовых утилит нет чувствительности к регистру) выводит
Недопустимая команда.
Недопустимая команда.
Firefox Setup 24.0b10.exe
Использованный код:(
echo anonymous
echo ilovefx
echo cd /pub/firefox/releases/latest-beta/win32/ru/
echo ls
echo quit
) | 2>nul ftp -A ftp.mozilla.org | findstr /v ".*Stub.*"
Но вопрос был о том, почему при некоторых условиях вылезает следующая за корректной строка - такое у меня бывало часто и в разных командах (больше всего неудобно, когда if <чтонибудь> echo).
Не могу найти документацию по ключу -A. Не подскажите?
[hr]
Ага, я так понял, -A это для анонимного логина, потому и две "недопустимые команды" :)
Спасибо за красивое решение этой проблемы, но вопрос был более глобален, если найду еще где - отпишусь.
Теперь бы это в переменную загнать :)
Foreigner
18-09-2013, 18:36
Не могу найти документацию по ключу -A
Просто ftp /?
Если анонимный вход на ftp разрешен, я так понимаю
всегда считал, что у нативных виндусовых утилит нет чувствительности к регистру
Говорят, что этот фтп позаимствован в bsd. Или что-то в этом роде.
apozlevich
18-09-2013, 18:39
Просто ftp /? »
Тогда оно пытается подключиться к узлу "/?" по ftp :)
Говорят, что этот фтп позаимствован в bsd. Или что-то в этом роде. »
В общем виде одно и то же, но -A там - active mode. Попробовал запустить скрипт без ключа - не логинится. Майкрософт такой майкрософт.
Foreigner
18-09-2013, 19:29
apozlevich,
Теперь бы это в переменную загнать
Криво, но без дополнительных файлов:
@echo off
setlocal
if not "%1"=="flag" for /f "tokens=*" %%i in ( 'call "%~f0" flag' ) do set "a=%%i"
if defined a goto:next
(
echo cd /pub/firefox/releases/latest-beta/win32/ru
echo ls
echo quit
) | 2>nul ftp -A ftp.mozilla.org | findstr /v "Stub"
goto:eof
:next
echo %a%
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.