Как я могу использовать командный файл для записи в текстовый файл?

192

Мне нужно сделать скрипт, который может записать одну строку текста в текстовый файл в том же каталоге, что и командный файл.

09stephenb
источник

Ответы:

309

Вы можете использовать echoи перенаправить вывод в текстовый файл (см. Примечания ниже):

rem Saved in D:\Temp\WriteText.bat
@echo off
echo This is a test> test.txt
echo 123>> test.txt
echo 245.67>> test.txt

Вывод:

D: \ Temp> WRITETEXT

D: \ Temp> введите test.txt
Это проверка
123
245,67

D: \ Temp>

Ноты:

  • @echo off отключает печать каждой команды на консоли
  • Если вы не укажете ему конкретный путь, вы будете перенаправлять >или >>записывать в текущий каталог (каталог, в котором выполняется код).
  • В echo This is a test > test.txtиспользует один >перезаписать любой файл , который уже существует с новым содержанием.
  • Остальные echoоператоры используют два >>символа для добавления в текстовый файл (add to) вместо его перезаписи.
  • В type test.txtпросто типы выходного файла , в окне командной строки.
Кен Уайт
источник
14
Последние три @знака излишни, так как вы уже сделали @echo off. Они нужны только в том случае, если эхо не было выключено. stackoverflow.com/a/21077142/632951
Pacerier
119

Проще использовать только один блок кода, тогда вам нужно только одно перенаправление.

(
  echo Line1
  echo Line2
  ...
  echo Last Line
) > filename.txt
Джеб
источник
7
OMG настолько прост, и это делает его наполовину человеком, что впечатляет, так как скриптинг похож на вступление в мир программирования, в котором нет
ничего хорошего
Это не сработало для меня, но вариант с перенаправлением перед блоком `> filename.txt (` сработал.
Willw
2
@willw Полагаю, где-то в вашем блоке кода есть дополнительные закрывающие скобки. Иначе это должно сработать, независимо от того, положите ли вы перенаправление вперед или после блока
jeb
@jeb Возможно - у меня больше нет исходного файла теста, поэтому я не уверен. Конечно, я впоследствии должен был избегать закрывающих) символов как ^), что, как правило, поддерживало бы вашу гипотезу. Тем не менее, по крайней мере, наше обсуждение предупреждает других о возможной ловушке.
будет
23

echo "blahblah"> txt.txt сотрет текст и поставит бла-бла на свое место

echo "blahblah">> txt.txt напишу бла на новую строку в тексте

Я думаю, что оба создадут новый текст, если не существует (я знаю, что первый)

Где " txt.txt" написано выше, путь файла может быть вставлен, если требуется. например C:\Users\<username>\desktop, который поместит его на рабочий стол.

Дарт Татер
источник
2
да, это верно для обоих. К сожалению, ваш ответ не добавляет дополнительную информацию к существующим ответам. (Упомянул '%~dp0бы ...)
Стефан
написать в TXT в той же папке?
Дарт Татер
записать в папку, где находится пакетный файл (независимо от каких- cdлибо pushdкоманд)
Стефан
14
    @echo off

    (echo this is in the first line) > xy.txt
    (echo this is in the second line) >> xy.txt

    exit

Эти два >>означают, что вторая строка будет добавлена ​​в файл (т.е. вторая строка начнется после последней строки xy.txt).

Вот как xy.txtвыглядит:

this is in the first line
this is in the second line
орган
источник
5

@echo off Название записи с использованием пакетных файлов цвет 0a

Текст примера echo> Filename.txt Дополнительный текст echo >> Filename.txt

@ECHO OFF
Title Writing Using Batch Files
color 0a

echo Example Text > Filename.txt
echo Additional Text >> Filename.txt
туз
источник
4
  • Вы можете использовать, copy con чтобы написать длинный текст
  • Пример:

    C: \ COPY CON [диск:] [путь] [имя файла]

    .... Содержание

    F6

    1 файл (ов) скопирован

Фам Тхань
источник
В командном файле copy con предлагает пользователю.
Heringer
3
@echo off

echo Type your text here.

:top

set /p boompanes=

pause

echo %boompanes%> practice.txt

надеюсь это поможет. Вы должны изменить имена строк (IDK, как он называется) и имя файла

Джон Калеб Гарон
источник