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 functie replaceLine , 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 hoofdscript krijgt het besturingselement terug en type het resultaat.



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow