batch-file
Skapa filer med batch
Sök…
Introduktion
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.
Så
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:
echo Hello World > myfile.txt
sparar "Hello World" i myfile.txtecho your name is %name% >> myfile.txt
lägger till "ditt namn är xxxx" i myfile.txtdir 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