Sök…


Introduktion

En användbar funktion i batchfiler är att kunna skapa filer med dem. Det här avsnittet visar hur du skapar filer med batchkod.

Syntax

  • echo (skriv här vad du vill att ska vara) >> (filnamn)
  • echo (variabelnamn) >> (filnamn)

Anmärkningar

Om det finns en fil kommer > att skriva över filen och >> läggs till i slutet av filen. Om en fil inte finns, kommer båda att skapa en ny fil.

Även echo lägger kommandot automatiskt en ny rad efter rad.

echo 1 > num.txt
echo 1 > num.txt 
echo 2 >> num.txt 

skapar följande fil:

1
2

Inte det här:

1 1 2

eller

1 2

Dessutom kan du inte bara ändra en enda rad i en textfil. Du måste läsa hela filen, ändra den i din kod och sedan skriva till hela filen igen.

Omdirigering

Formatera:

[command] [> | >>] [filename]

> sparar utgången från [kommando] i [filnamn].

>> lägger ut kommandot från [kommando] till [filnamn].

Exempel:

  1. echo Hello World > myfile.txt sparar "Hello World" i myfile.txt

  2. echo your name is %name% >> myfile.txt lägger till "ditt namn är xxxx" i myfile.txt

  3. dir C:\ > directory.txt sparar katalogen med C: \ till katalog.txt

Echo för att skapa filer

Sätt att skapa en fil med ekokommandot:

ECHO. > example.bat (creates an empty file called "example.bat")

ECHO message > example.bat (creates example.bat containing "message")
ECHO message >> example.bat (adds "message" to a new line in example.bat)
(ECHO message) >> example.bat (same as above, just another way to write it)

Om du vill skapa en fil via ECHO kommandot, i en specifik katalog på din dator, kan du få problem.

ECHO Hello how are you? > C:\Program Files\example.bat

(This will NOT make a file in the folder "Program Files", and might show an error message)

Men hur gör vi det? Det är faktiskt extremt enkelt ... När du skriver en sökväg eller filnamn som har ett utrymme ingår i dess namn, kom ihåg att använda "citat"

ECHO Hello how are you? > "C:\Program Files\example.bat"
(This will create "example.bat" in the folder "Program Files")

Men tänk om du vill skapa en fil som matar ut en ny fil?

ECHO message > file1.bat > example.bat

(example.bat is NOT going to contain "message > file1.bat")
example.bat will just contain "message"... nothing else

Hur gör vi det här? Tja för detta använder vi symbolen ^ .

ECHO message ^> file1.bat > example.bat

(example.bat is going to contain "message > file1.bat")

Samma sak gäller andra saker i batch

Nästa steg kräver att du har lite kunskap om variabler och uttalanden:

Klicka här för att lära dig om variabler | Klicka här för att lära dig om om och annat uttalanden

variabler:

SET example="text"
ECHO %example% > file.bat
(This will output "text" to file.bat)

om vi inte vill att det ska matas ut "text" utan bara% exempel% skriver du:

ECHO ^%example^% > file.bat
(This will output "%example%" to file.bat)

IF / ELSE-uttalanden:

ELSE statements are written with "pipes" ||

IF ^%example^%=="Hello" ECHO True || ECHO False > file.bat

(example.bat is going to contain "if %example%=="Hello" echo True")
[it ignores everything after the ELSE statement]

för att mata ut hela linjen gör vi samma sak som tidigare.

IF ^%example^%=="Hello" ECHO True ^|^| ECHO False > file.bat

This will output:
IF %example%=="Hello" ECHO True || ECHO False

Om variabeln är lika med "Hej" kommer den att säga "Sann", ELSE kommer den att säga "Falsk"

Spara utgången från många kommandon

Använda många ECHO kommandon för att skapa en batchfil:

(
  echo echo hi, this is the date today
  echo date /T
  echo echo created on %DATE%
  echo pause >nul
)>hi.bat

Kommandotolkaren behandlar hela avsnittet inom parentes som ett enda kommando och sparar all utdata till hi.bat .

hi.bat innehåller nu:

echo hi, this is the date today
date /T
echo created on [date created]
pause >nul


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow