Хобрук: Ваш путь к мастерству в программировании

Почему set /p получает только 1 строку из канала?

Я пытался сделать что-то вроде

type test.txt | multiline.bat

с

test.txt

1
2
3

многострочный.bat

set /p a=a
set /p "b=b"
set /p c=c

(echo %a% %b% %c%)>result.txt
pause

Но в результате.txt остался

1

когда я ожидал

1 2 3

Я нашел https://stackoverflow.com/a/6980605, в котором говорилось

set /p doesn't work with pipes, it takes one (randomly) line from the input.

Но почему??


  • Вы можете понять, почему здесь 25.03.2020

Ответы:


1

set /p перестает читать ввод, когда обрабатывает новую строку. Это можно увидеть с помощью простого скрипта

@echo off
set /p "line=String containing newline:"
echo %line%

а затем вставить строку

one
two

Будет отображаться только one.


Если вы знаете, сколько строк вам нужно обработать, вы можете сгруппировать свои set /p команд вместе в блоке кода и перенаправить файл на него следующим образом:

(
    set /p "a="
    set /p "b="
    set /p "c="
)<test.txt
(echo %a% %b% %c%)>result.txt

Вы также можете взять имя входного файла в качестве параметра и изменить test.txt на %1 в этом фрагменте.

25.03.2020
  • Я знаю, что несколько set/p работают с оператором ‹. А почему не трубка? 25.03.2020
  • @loadingnow, я бы сказал, плохой дизайн или реализация, кажется, что указатель данных установлен неправильно ... 25.03.2020
  • Новые материалы

    Учебные заметки JavaScript Object Oriented Labs
    Вот моя седьмая неделя обучения программированию. После ruby ​​и его фреймворка rails я начал изучать самый популярный язык интерфейса — javascript. В отличие от ruby, javascript — это более..

    Разбор строк запроса в vue.js
    Иногда вам нужно получить данные из строк запроса, в этой статье показано, как это сделать. В жизни каждого дизайнера/разработчика наступает момент, когда им необходимо беспрепятственно..

    Предсказание моей следующей любимой книги 📚 Благодаря данным Goodreads и машинному обучению 👨‍💻
    «Если вы не любите читать, значит, вы не нашли нужную книгу». - J.K. Роулинг Эта статья сильно отличается от тех, к которым вы, возможно, привыкли . Мне очень понравилось поработать над..

    Основы принципов S.O.L.I.D, Javascript, Git и NoSQL
    каковы принципы S.O.L.I.D? Принципы SOLID призваны помочь разработчикам создавать надежные, удобные в сопровождении приложения. мы видим пять ключевых принципов. Принципы SOLID были разработаны..

    Как настроить Selenium в проекте Angular
    Угловой | Селен Как настроить Selenium в проекте Angular Держите свое приложение Angular и тесты Selenium в одной рабочей области и запускайте их с помощью Mocha. В этой статье мы..

    Аргументы прогрессивного улучшения почти всегда упускают суть
    В наши дни в кругах веб-разработчиков много болтают о Progressive Enhancement — PE, но на самом деле почти все аргументы с обеих сторон упускают самую фундаментальную причину, по которой PE..

    Введение в Джанго Фреймворк
    Схема «работать умно, а не усердно» В этой и последующих статьях я познакомлю вас с тем, что такое фреймворк Django и как создать свое первое приложение с помощью простых и понятных шагов, а..