Объявите переменную и используйте ее для перенаправления вывода в одну строку - PullRequest
0 голосов
/ 24 сентября 2019

Я хотел бы установить переменную и использовать ее в качестве имени файла для перенаправления вывода, все в командной строке и в одной строке.

Мне удалось напечатать содержимое переменной с помощью set foo=bar && call echo %foo%, который печатает bar

Теперь я хотел бы написать bar в файл с именем baz, например, set foo=bar && call echo baz > %foo% (это не работает, он пишет в файл с именем %foo%

Ответы [ 4 ]

0 голосов
/ 25 сентября 2019

Могу я спросить, почему вы хотите это сделать?

Можно создать переменную и использовать ее в одной строке, но для ее расширения требуется «обман» cmd для расширения переменной путем создания второй командысессия.

SET "foo=bar.txt"&cmd /c "ECHO.baz>%foo%"

В большинстве случаев это не самая полезная вещь, но она выполняет именно то, что вы просили.

Результаты:

C:\Admin>SET "foo=bar.txt"&cmd /c "ECHO.%~A>%foo%"

C:\Admin>dir *bar*
 Volume in drive C has no label.
 Volume Serial Number is D4CD-98ED

 Directory of C:\Admin

09/25/2019  09:26 AM                 5 bar.txt
               1 File(s)              5 bytes
               0 Dir(s)   4,869,840,896 bytes free

editсо вчерашнего дня этот экран был включен и пришлось заново загрузить Chrome в этом AM, но он не работал;обновите страницу, чтобы я не понял, что кто-то еще ответил на нее, она обновилась после того, как я отправил сообщение.

Мой ответ по сути является альтернативным синтаксисом для принятого ответа, так как кавычки необязательны с cmd / c

0 голосов
/ 25 сентября 2019

это должно работать

@echo off set /p "file=PathToFile" set /p "Write=text" echo %Write%>> %file%

Записать - это то, что вы записываете в файл set / p, просто устанавливая переменную для ввода пользователя.

0 голосов
/ 25 сентября 2019

Это должно работать

set "foo=bar.txt" & cmd /c echo baz^>"%foo%"

При условии, что foo не определено ранее.
Если есть вероятность, что foo может быть определено, или если вы используете несколько раз строку с разнымиопределения для foo, что приводит к определению foo при последующем использовании, тогда вы можете использовать отложенное расширение во втором экземпляре cmd:

set "foo=bar.txt" & cmd /v /c echo baz^>"!foo!"

Если текущий сеанс cmd уже запущен с отложенным расширениемcmd /v тогда вам не нужно использовать дополнительный слой cmd:

set "foo=bar.txt" & echo baz>"!foo!"
0 голосов
/ 25 сентября 2019

Вы можете сделать это с помощью расширения переменных внутри файла:

setlocal EnableDelayedExpansion
set foo=bar && @echo baz > !foo!
endlocal
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...