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ör replaceLine , 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.
  • Huvudskriptet får tillbaka kontrollen och type resultatet.



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