Як можна використовувати пакетний файл для запису в текстовий файл?


192

Мені потрібно зробити сценарій, який може записати один рядок тексту до текстового файлу в тій самій директорії, що і пакетний файл.

Відповіді:


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операторів використовуються два >>символи для додавання до текстового файлу (додавання до), а не перезаписування.
  • У type test.txtпросто типи вихідного файлу , у вікні командного рядка.

14
Останні три @ознаки є зайвими, оскільки ви вже були @echo off. Вони потрібні лише в тому випадку, якщо відлуння не було вимкнено. stackoverflow.com/a/21077142/632951
Pacerier

119

Простіше використовувати лише один блок коду, тоді вам потрібно лише одне перенаправлення.

(
  echo Line1
  echo Line2
  ...
  echo Last Line
) > filename.txt

7
OMG настільки простий, і це робить його на півдорозі людиною, що вражає, оскільки сценарій - це як вступ до світу програмування
gregg

Це не спрацювало для мене, але варіація з перенаправленням перед блоком `> filename.txt (` справді спрацювало.
буде

2
@willw я вважаю, є додаткова закриває дужка де - то в вашому коді block.Else він повинен працювати, незалежно якщо поставити переадресацію перед або після блоку
Джеб

@jeb Можливо - у мене більше немає оригінального тестового файлу, тому не можу бути впевнений. Звичайно, мені згодом довелося уникнути закриття) символів як ^), що, як правило, підтримує вашу гіпотезу. І все-таки принаймні наша дискусія попереджає інших про можливу пастку.
Буде

23

echo "blahblah"> txt.txt видалить txt і поставить блахбла на його місце

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

Я думаю, що обидва створять новий txt, якщо такого не існує (я знаю, що перший)

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


2
так, це правда для обох. На жаль, ваша відповідь не додає додаткової інформації до існуючих відповідей. (Згадуючи '%~dp0б ...)
Stephan

написати в 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 Приклад тексту> Назва файлу.txt ехо Додатковий текст >> Ім'я файлу.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 файл (и)


У пакетному файлі копіювання con запрошує користувача.
heringer

3
@echo off

echo Type your text here.

:top

set /p boompanes=

pause

echo %boompanes%> practice.txt

сподіваюся, що це допомагає. ви повинні змінити назви рядків (IDK, як його викликано) та ім'я файлу

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.