batch-file
Filhantering i batchfiler
Sök…
Introduktion
I det här ämnet kommer du att lära dig att skapa, redigera, kopiera, flytta och radera filer i batch.
Skapa en fil i batch
Det kan finnas flera skäl till varför du vill skapa en textfil i batch. Men vad orsaken än är, så gör du det.
Om du vill skriva över en befintlig textfil använder du >
. Exempel:
@echo off
echo info to save > text.txt
Men om du vill lägga till text till en redan befintlig textfil använder du >>
. Exempel:
@echo off
echo info to save >> text.txt
Om du behöver spara flera rader text i en fil använder du ()>text.txt
Exempel:
@echo off
(echo username
echo password)>text.txt
Hur man kopierar filer i batch
Du kanske vill kopiera filer från en plats till en annan. I det här exemplet kommer vi att lära dig.
Du kan använda kommandot xcopy
. Syntaxen är xcopy c:\From C:\To
Exempel:
@echo off
xcopy C:\Folder\text.txt C:\User\Username\Desktop
Det finns också switchar du kan använda. Om du vill se dem öppna kommandoprompt från Start Menu -> Accessories -> Command Prompt
och skriv sedan xcopy /?
Flytta filer
Med hjälp av flyttkommandot kan du flytta filer:
@echo off
cd C:\Foo\Bat\Baz
move /Y Meow.bat "Meow Folder" >nul
Meow.bat
står för vilken fil som ska flyttas. "Meow-mappen" flyttar Meow.bat
till Meow Folder
. /Y
säger att inte be om bekräftelse. Byte av det med /-Y
gör att batchfilen uppmanas att bekräftas. >nul
döljer kommandoutputen. Om det inte hade >nul
, skulle det matas ut:
1 File Moved
Radera filer
Med kommandot DEL
(alias för ERASE
) kan man ta bort filer.
@echo off
del foo.ext
Detta kommando raderar foo.ext
från den aktuella katalogen. Man kan också ange sökväg och fil, till exempel:
del C:\Foo\Bar\Baz.ext
Men det är alltid idealiskt att lägga citat ( "
) runt banor, se här av anledningen.
Det finns några flaggor tillgängliga för DEL
.
Flagga | Fungera |
---|---|
/P | Frågar användare innan du raderar fil (er) |
/F | Ta bort skrivskyddad fil (er) med kraft |
/S | Ta bort fil (er) i underkataloger |
/Q | Förhindrar användarprompt |
/A | Filter: Ta bara bort en specifik tilldelad fil, |
med hjälp av - tecken innebär inte tillskrivs som den typen. |
Kopiera filer utan xcopy
I det här exemplet visade användaren BoeNoe hur man använder kommandot xcopy
att kopiera filer. Det finns också ett extra kommando som heter copy
.
Här är ett enkelt exempel:
copy foo.ext bar.ext
Detta kopierar foo.ext
till bar.ext
och skapar bar.ext
när det inte finns. Vi kan också ange sökvägar till filen, men det är alltid idealiskt att lägga citat ( "
) runt banor. Se här av anledningen.
Det finns också många flaggor tillgängliga för copy
, se copy /?
eller help copy
på en kommandotolk för att se mer.
Redigera N: a raden i en fil
Batch-filen levereras inte med en inbyggd metod för att ersätta den n
a raden i en fil förutom att replace
och append
( >
och >>
). Med hjälp for
slingor kan vi emulera den här typen av funktion.
@echo off
set file=new2.txt
call :replaceLine "%file%" 3 "stringResult"
type "%file%"
pause
exit /b
:replaceLine <fileName> <changeLine> <stringResult>
setlocal enableDelayedExpansion
set /a lineCount=%~2-1
for /f %%G in (%~1) do (
if !lineCount! equ 0 pause & goto :changeLine
echo %%G>>temp.txt
set /a lineCount-=1
)
:changeLine
echo %~3>>temp.txt
for /f "skip=%~2" %%G in (%~1) do (
echo %%G>>temp.txt
)
type temp.txt>%~1
del /f /q temp.txt
endlocal
exit /b
replaceLine
kallar funktionen förreplaceLine
, med filnamnet / vilken rad som ska ändras / och strängen som ska ersättas.Funktionen får ingången
- Det slingrar genom alla rader och
echo
dem till en tillfällig fil innan ersättningsraden - Det
echo
är ersättningsraden till filen - Det fortsätter att matas ut till resten av filen
- Den kopierar den tillfälliga filen till den ursprungliga filen
- Och tar bort den tillfälliga filen.
- Det slingrar genom alla rader och
Huvudskriptet får tillbaka kontrollen och
type
resultatet.