Лучший отвечающий
CMD/BAT Команда ECHO

Вопрос
-
Задача - создать файл из cmd скрипта
@echo off set PATH1=error:\data.txt set PATH2=d:\data.txt set /a error=0 set DATA=^ line1 ^ line2 ^ line3 echo Creating %PATH1% (echo %DATA% 1>%PATH1% 2>nul) && set /a error=0 || set /a error=1 echo errorLevel= %errorLevel% echo error= %error% if %error% equ 0 ( type %PATH1% ) echo. echo Creating %PATH2% (echo %DATA% 1>%PATH2% 2>nul) && set /a error=0 || set /a error=1 echo errorLevel= %errorLevel% echo error= %error% if %error% equ 0 ( type %PATH2% ) pause
Выдаёт следующие
Creating error:\data.txt Синтаксическая ошибка в имени файла, имени папки или метке тома. errorLevel= 0 error= 1 Creating d:\data.txt errorLevel= 0 error= 0 line1 line2 line3 Для продолжения нажмите любую клавишу . . .
Вопросы:
1. Можно ли подавить вывод ошибки ECHO (Синтаксическая ошибка в имени файла, имени папки или метке тома.)?
2. Почему выполнение ECHO не влияет на %errorLevel%?
3. Возможно ли создать многострочный файл одной командой ECHO?
17 мая 2020 г. 16:16
Ответы
-
"Подавить" ошибку нельзя, надо просто ее не допускать ее. Например, надо указать верный путь вместо неверного "error:\data.txt". Если путь водится пользователем, то его следует проверить на правильность и выдать сообщение об ошибке если кто то напечатает неверный путь.
Команда еcho никогда не отказывает и нужды выставлять/проверять код нет. Отказ у вас происходит в другой части скрипта где вы использовали заведомо неверный путь для переназначения вывода.
Для создания файла с несколькими строками можно использовать команду for. Строки при этом должны быть разделены запятыми. То что вы использовали на деле создает одну строку. Кроме того если требуется то файл следует перед выводом удалить или очистить.
@echo off
set output=correct_file_name.txt
set data=line1,line2,line2
for %%l in (%data%) do echo %%l>>%output%This posting is provided "AS IS" with no warranties, and confers no rights.
- Предложено в качестве ответа Иван ПродановMicrosoft contingent staff, Moderator 18 мая 2020 г. 22:28
- Помечено в качестве ответа sergey-kuznet 21 мая 2020 г. 14:23
18 мая 2020 г. 16:14Модератор
Все ответы
-
cmd принципиален? ms придумал и внедрил замену в виде powershell который намного проще и функциональней cmd
The opinion expressed by me is not an official position of Microsoft
17 мая 2020 г. 18:33Модератор -
cmd принципиален? ms придумал и внедрил замену в виде powershell который намного проще и функциональней cmd
К сожалению принципиален
The opinion expressed by me is not an official position of Microsoft
17 мая 2020 г. 18:43 -
"Подавить" ошибку нельзя, надо просто ее не допускать ее. Например, надо указать верный путь вместо неверного "error:\data.txt". Если путь водится пользователем, то его следует проверить на правильность и выдать сообщение об ошибке если кто то напечатает неверный путь.
Команда еcho никогда не отказывает и нужды выставлять/проверять код нет. Отказ у вас происходит в другой части скрипта где вы использовали заведомо неверный путь для переназначения вывода.
Для создания файла с несколькими строками можно использовать команду for. Строки при этом должны быть разделены запятыми. То что вы использовали на деле создает одну строку. Кроме того если требуется то файл следует перед выводом удалить или очистить.
@echo off
set output=correct_file_name.txt
set data=line1,line2,line2
for %%l in (%data%) do echo %%l>>%output%This posting is provided "AS IS" with no warranties, and confers no rights.
- Предложено в качестве ответа Иван ПродановMicrosoft contingent staff, Moderator 18 мая 2020 г. 22:28
- Помечено в качестве ответа sergey-kuznet 21 мая 2020 г. 14:23
18 мая 2020 г. 16:14Модератор -
"Подавить" ошибку нельзя, надо просто ее не допускать ее. Например, надо указать верный путь вместо неверного "error:\data.txt". Если путь водится пользователем, то его следует проверить на правильность и выдать сообщение об ошибке если кто то напечатает неверный путь.
Команда еcho никогда не отказывает и нужды выставлять/проверять код нет. Отказ у вас происходит в другой части скрипта где вы использовали заведомо неверный путь для переназначения вывода.
Для создания файла с несколькими строками можно использовать команду for. Строки при этом должны быть разделены запятыми. То что вы использовали на деле создает одну строку. Кроме того если требуется то файл следует перед выводом удалить или очистить.
@echo off
set output=correct_file_name.txt
set data=line1,line2,line2
for %%l in (%data%) do echo %%l>>%output%
This posting is provided "AS IS" with no warranties, and confers no rights.
18 мая 2020 г. 17:51