2014-09-09 3 views
4

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

Вот код:

@echo off 
@echo san policy=onlineall> test.txt 
@echo select disk 1>> test.txt 
@echo online disk>> test.txt 

Вот полученный текстовый файл (test.txt)

san policy=onlineall 
select disk 
online disk 

Почему "1" отсутствует из результирующего кода?

+1

Вы можете перенаправить выходные Chanels, специфические. 1 - стандартный вывод, а 2 - стандартная ошибка (test.txt содержит сообщение об ошибке, если возникает ошибка). Таким образом, скрипт интерпретирует '1' как спецификацию, которая выводит chanel, которую вы хотите перенаправить. Можете ли вы попробовать '@echo 'выбрать диск 1" >> test.txt'? – Tom

+0

Спасибо Том. Когда я пытаюсь поместить это в кавычки, он выводит «select disk 1» в test.txt, то есть файл имеет цитаты вокруг этой строки. – Jake

ответ

3

Спасаясь 1 с кареткой также будет работать:

@echo off 
@echo san policy=onlineall> test.txt 
@echo select disk ^1>> test.txt 
@echo online disk>> test.txt 
+0

+1, Ницца. Я не знал об этом. – dbenham

3

Вы можете перенаправить различные потоки с помощью >. Они различаются по номерам, 0 - stdin, 1 - stdout, 2 - stderr, для перечисления предопределенных.

Так что, чтобы ответить на ваш вопрос, когда вы пишете 1>, окна думают, что вы хотите эхо в потоке 1 (что по умолчанию так или иначе). Возможное решение - просто вставить пробел между ними, но это также выведет это пространство. Но, вы также можете написать это:

>>test.txt echo select disk 1 
+0

Это отлично работает. В моем случае добавление пространства не влияет на программу, которую файл будет читать (DISKPART), поэтому оба решения работают. – Jake