Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Откуда вывод лишней строки? (http://forum.oszone.net/showthread.php?t=268317)

apozlevich 18-09-2013 15:27 2219862

Откуда вывод лишней строки?
 
Добрый день, форумчане. Наконец-то я смог поймать этот баг в одной строке.
Код:

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.txt
читать дальше »
Код:

anonymous
ilovefx
cd /pub/firefox/releases/latest-beta/win32/ru/
ls
quit


Foreigner 18-09-2013 18:03 2219943

Так?
Код:

@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 2219960

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. Не подскажите?


Ага, я так понял, -A это для анонимного логина, потому и две "недопустимые команды" :)
Спасибо за красивое решение этой проблемы, но вопрос был более глобален, если найду еще где - отпишусь.

Теперь бы это в переменную загнать :)

Foreigner 18-09-2013 18:36 2219965

Цитата:

Не могу найти документацию по ключу -A
Просто ftp /?
Если анонимный вход на ftp разрешен, я так понимаю

Цитата:

всегда считал, что у нативных виндусовых утилит нет чувствительности к регистру
Говорят, что этот фтп позаимствован в bsd. Или что-то в этом роде.

apozlevich 18-09-2013 18:39 2219969

Цитата:

Цитата Foreigner
Просто ftp /? »

Тогда оно пытается подключиться к узлу "/?" по ftp :)

Цитата:

Цитата Foreigner
Говорят, что этот фтп позаимствован в bsd. Или что-то в этом роде. »

В общем виде одно и то же, но -A там - active mode. Попробовал запустить скрипт без ключа - не логинится. Майкрософт такой майкрософт.

Foreigner 18-09-2013 19:29 2219998

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%



Время: 19:50.

Время: 19:50.
© OSzone.net 2001-