Как использовать функцию Windows CMD pipe (|) с параметром команды CALL: Label?

У меня неприятная проблема, когда я хочу использовать функцию pipe ( | ) с параметром CALL: Label оболочки CMD окна. У меня есть очень маленький пример (ниже): call-test .cmd и пример вывода.

Суть проблемы заключалась / заключается в передаче вывода сценария CMD другой программе, например утилита tee или команда find . Например:

    @call   :Label-02  param  | tee call-test.log

Которая запустит текущий командный файл с метки Label-02 и направит вывод на tee . К сожалению, использование вертикальной черты (|) в строке с опцией «call: label» дает ошибку:

Invalid attempt to call batch label outside of batch script.

В то время как « call example.cmd | tee example.log» работает нормально.

Другое перенаправление ввода-вывода > работает нормально. Это только один случай, когда " call: label pipe (|) " не работает. Для меня это просто похоже на ошибку Windows.

Есть ли у кого-нибудь обходной путь и / или знает объяснение?

Спасибо,

Invalid attempt to call batch label outside of batch script.

В то время как « call example.cmd | tee example.log» работает нормально.

Другое перенаправление ввода-вывода > работает нормально. Это только один случай, когда " call: label pipe (|) " не работает. Для меня это просто похоже на ошибку Windows.

Есть ли у кого-нибудь обходной путь и / или знает объяснение?

Спасибо,

Invalid attempt to call batch label outside of batch script.

В то время как « call example.cmd | tee example.log» работает нормально.

Другое перенаправление ввода-вывода > работает нормально. Это только один случай, когда " call: label pipe (|) " не работает. Для меня это просто похоже на ошибку Windows.

Есть ли у кого-нибудь обходной путь и / или знает объяснение?

Спасибо, Будет ли


  • call-test вывод

     c: \> call-test
     [Начало]
     метка 03 :: p1
    Недопустимая попытка вызвать метку пакета вне сценария пакета.
    Недопустимая попытка вызвать метку пакета вне сценария пакета.
     [сделано]
    Нажмите любую клавишу для продолжения . . .
    
  • вызов-тест

     @echo off 
    @rem call-test.cmd
    @rem _________________________________________________
    @rem Test: опция вызова метки для файлов .cmd.
    @rem
    @echo ^ [начало]
    @call: Label-03 p1
    @call: Этикетка-02 секунда | найти " "
    @call: Этикетка-02 секунда | тройник call-test.log
    @goto Готово
    @rem _________________________________________________
    : Этикетка-01 
    @echo ^ метка 01 ::% 1
    @goto Выход
    @rem _________________________________________________
    : Этикетка-02 
    @echo ^ метка 02 ::% 1
    @goto Выход
    @rem _________________________________________________
    : Этикетка-03 
    @echo ^ метка 03 ::% 1
    @goto Выход
    @rem _________________________________________________
    :Готово 
    @echo ^ [готово]
    @Пауза
    @rem _________________________________________________
    :Выход 
    @exit / b
    
18
задан Gilles 'SO- stop being evil' 21 November 2010 в 15:42
поделиться