batch-file
Bestandsafhandeling in batchbestanden
Zoeken…
Invoering
In dit onderwerp leert u hoe u bestanden in batch kunt maken, bewerken, kopiëren, verplaatsen en verwijderen.
Een bestand in batch maken
Er kunnen meerdere redenen zijn waarom u een tekstbestand in batch wilt maken. Maar wat de reden ook is, dit is hoe je het doet.
Gebruik >
als u een bestaand tekstbestand wilt overschrijven. Voorbeeld:
@echo off
echo info to save > text.txt
Maar als u tekst wilt toevoegen aan een reeds bestaand tekstbestand, gebruik dan >>
. Voorbeeld:
@echo off
echo info to save >> text.txt
Als u meerdere regels tekst in een bestand wilt opslaan, gebruikt u ()>text.txt
Voorbeeld:
@echo off
(echo username
echo password)>text.txt
Hoe bestanden in batch te kopiëren
Misschien wilt u bestanden van de ene plaats naar de andere kopiëren. In dit voorbeeld zullen we je leren.
U kunt het commando xcopy
. De syntaxis is xcopy c:\From C:\To
Voorbeeld:
@echo off
xcopy C:\Folder\text.txt C:\User\Username\Desktop
Er zijn ook schakelaars die u kunt gebruiken. Als je ze wilt bekijken, open dan de opdrachtprompt via Start Menu -> Accessories -> Command Prompt
en typ vervolgens xcopy /?
Bestanden verplaatsen
Met de opdracht verplaatsen kunt u bestanden verplaatsen:
@echo off
cd C:\Foo\Bat\Baz
move /Y Meow.bat "Meow Folder" >nul
Meow.bat
staat voor welk bestand moet worden verplaatst. De "Miauw Folder" beweegt Meow.bat
de Meow Folder
. /Y
zegt niet om bevestiging te vragen. Als u dat vervangt door /-Y
wordt het batchbestand om bevestiging gevraagd. De >nul
verbergt de opdrachtuitvoer. Als het niet >nul
, zou het uitvoeren:
1 File Moved
Bestanden verwijderen
Met de opdracht DEL
(alias voor ERASE
) kunt u bestanden verwijderen.
@echo off
del foo.ext
Met deze opdracht wordt foo.ext
uit de huidige map verwijderd. Je kunt ook pad en bestand opgeven, zoals:
del C:\Foo\Bar\Baz.ext
Maar het is altijd ideaal om aanhalingstekens ( "
) rond paden te plaatsen, zie hier voor de reden.
Er zijn een paar vlaggen beschikbaar voor DEL
.
Vlag | Functie |
---|---|
/P | Vraagt gebruiker voordat bestand (en) worden verwijderd |
/F | Verwijder alleen-lezen bestand (en) met geweld |
/S | Verwijder bestand (en) in submappen |
/Q | Voorkomt de gebruikersprompt |
/A | Filter: verwijder alleen specifiek toegewezen bestand, |
met het - teken betekent niet hoedanigheid van dat type. |
Bestanden kopiëren zonder xcopy
In dit voorbeeld liet gebruiker BoeNoe zien hoe de opdracht xcopy
om bestanden te kopiëren. Er is ook een extra opdracht genaamd copy
.
Hier is een eenvoudig voorbeeld:
copy foo.ext bar.ext
Dit kopieert foo.ext
naar bar.ext
en maakt bar.ext
als het niet bestaat. We kunnen ook paden naar het bestand opgeven, maar het is altijd ideaal om aanhalingstekens ( "
) rond paden te plaatsen, zie hier voor de reden.
Er zijn ook veel vlaggen beschikbaar om te copy
, zie copy /?
of help copy
op een opdrachtprompt om meer te zien.
Nde regel van een bestand bewerken
Batch-bestand wordt niet geleverd met een ingebouwde methode voor het vervangen van de n
de regel van een bestand behalve replace
en append
( >
en >>
). Met behulp van for
lussen kunnen we dit soort functies emuleren.
@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
Het
replaceLine
roept de functiereplaceLine
, met de bestandsnaam / welke regel moet worden gewijzigd / en de tekenreeks die moet worden vervangen.Functie ontvangt de invoer
- Het doorloopt alle lijnen en
echo
ze naar een tijdelijk bestand vóór de vervangende regel - Het
echo
de vervangende regel naar het bestand - Het blijft uitvoeren naar de rest van het bestand
- Het kopieert het tijdelijke bestand naar het oorspronkelijke bestand
- En verwijdert het tijdelijke bestand.
- Het doorloopt alle lijnen en
Het hoofdscript krijgt het besturingselement terug en
type
het resultaat.