Jak mogę użyć pliku wsadowego do zapisu w pliku tekstowym?

192

Muszę stworzyć skrypt, który może zapisać jeden wiersz tekstu w pliku tekstowym w tym samym katalogu, co plik wsadowy.

09stephenb
źródło

Odpowiedzi:

309

Możesz użyć echoi przekierować dane wyjściowe do pliku tekstowego (patrz uwagi poniżej):

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

Wynik:

D: \ Temp> WriteText

D: \ Temp> wpisz test.txt
To jest test
123
245,67

D: \ Temp>

Uwagi:

  • @echo off wyłącza drukowanie każdego polecenia na konsoli
  • O ile nie podasz konkretnej nazwy ścieżki, przekierowanie z >lub >>zapisze w bieżącym katalogu (katalogu, w którym kod jest uruchamiany).
  • Do echo This is a test > test.txtwykorzystuje jeden >nadpisać dowolny plik, który już istnieje o nowe treści.
  • Pozostałe echoinstrukcje używają dwóch >>znaków, aby dołączyć do pliku tekstowego (dodać do), zamiast go zastąpić.
  • Po type test.txtprostu wpisuje dane wyjściowe pliku do okna poleceń.
Ken White
źródło
14
Ostatnie trzy @znaki są zbędne, ponieważ już to zrobiłeś @echo off. Są potrzebne tylko wtedy, gdy echo nie zostało wyłączone. stackoverflow.com/a/21077142/632951
Pacerier
119

Łatwiej jest użyć tylko jednego bloku kodu, wtedy potrzebujesz tylko jednego przekierowania.

(
  echo Line1
  echo Line2
  ...
  echo Last Line
) > filename.txt
jeb
źródło
7
OMG jest tak prosty i sprawia, że ​​jest on w połowie ludzki, co robi wrażenie, ponieważ skrypty są jak wstęp do jibberish world programowania
gregg
Nie działało to dla mnie, ale odmiana z przekierowaniem przed blokiem `> filename.txt (` działała.
willw
2
@willw Podejrzewam, że gdzieś w twoim bloku kodu znajduje się dodatkowy nawias zamykający, ponieważ musi on działać, niezależnie od tego, czy przekierowanie zostanie umieszczone z przodu, czy po bloku
jeb
@jeb Możliwe, że nie mam już oryginalnego pliku testowego, więc nie mogę być tego pewien. Z pewnością musiałem następnie uciec przed zamykającymi) znakami jako ^), co miałoby tendencję do podtrzymania twojej hipotezy. Mimo to przynajmniej nasza dyskusja ostrzega innych przed możliwą pułapką.
willw
23

echo "blahblah"> txt.txt usunie txt i umieści blablah na swoim miejscu

echo "blahblah">> txt.txt napisze blablah na nowej linii w txt

Myślę, że oba utworzą nowy txt, jeśli nie istnieje (wiem, że pierwszy)

Tam, gdzie txt.txtpowyżej napisano „ ”, w razie potrzeby można wstawić ścieżkę pliku. np. C:\Users\<username>\desktop, który umieści go na pulpicie.

Darth Tater
źródło
2
tak, dotyczy to obu. Niestety twoja odpowiedź nie dodaje dodatkowych informacji do istniejących odpowiedzi. (Wzmianka '%~dp0by ...)
Stephan
napisać do txt w tym samym folderze?
Darth Tater,
zapisać w folderze, w którym znajduje się plik wsadowy (niezależnie od dowolnego polecenia cdlub pushdpoleceń)
Stephan
14
    @echo off

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

    exit

Obie >>oznaczają, że druga linia zostanie dołączona do pliku (tj. Druga linia rozpocznie się po ostatniej linii xy.txt).

tak to xy.txtwygląda:

this is in the first line
this is in the second line
Organ
źródło
5

@echo wyłączone Pisanie tytułów przy użyciu plików wsadowych kolor 0a

echo Przykładowy tekst> Filename.txt echo Dodatkowy tekst >> Filename.txt

@ECHO OFF
Title Writing Using Batch Files
color 0a

echo Example Text > Filename.txt
echo Additional Text >> Filename.txt
As
źródło
4
  • Możesz użyć copy con do napisania długiego tekstu
  • Przykład:

    C: \ COPY CON [dysk:] [ścieżka] [nazwa pliku]

    .... Zadowolony

    F6

    1 plik (i) jest kopiowany

Pham Thanh
źródło
W pliku wsadowym polecenie copy con monituje użytkownika.
heringer
3
@echo off

echo Type your text here.

:top

set /p boompanes=

pause

echo %boompanes%> practice.txt

mam nadzieję że to pomoże. powinieneś zmienić nazwy ciągów (IDK jak to się nazywa) i nazwę pliku

John Caleb Garon
źródło