Ricerca…


introduzione

In questo argomento imparerai come creare, modificare, copiare, spostare ed eliminare i file in batch.

Creazione di un file in batch

Potrebbero esserci più motivi per cui si desidera creare un file di testo in batch. Ma qualunque sia la ragione, questo è il modo in cui lo fai.

Se vuoi sovrascrivere un file di testo esistente usa > . Esempio:

@echo off
echo info to save > text.txt

Ma se vuoi aggiungere del testo a un file di testo già esistente, usa >> . Esempio:

@echo off
echo info to save >> text.txt

Se è necessario salvare più righe di testo in un file, utilizzare ()>text.txt Esempio:

@echo off
(echo username
 echo password)>text.txt

Come copiare i file in batch

Potresti voler copiare i file da un posto all'altro. In questo esempio ti insegneremo.

Puoi usare il comando xcopy . La sintassi è xcopy c:\From C:\To

Esempio:

@echo off
xcopy C:\Folder\text.txt C:\User\Username\Desktop

Ci sono anche degli switch che puoi usare. Se si desidera visualizzarli, aprire il prompt dei comandi dal Start Menu -> Accessories -> Command Prompt e digitare xcopy /?

Spostare i file

Utilizzando il comando move, puoi spostare i file:

@echo off
cd C:\Foo\Bat\Baz
move /Y Meow.bat "Meow Folder" >nul

Meow.bat indica il file da spostare. La "cartella Meow" sposta Meow.bat nella Meow Folder . /Y dice di non richiedere conferma. Sostituendolo con /-Y , il prompt del file batch richiede conferma. Il >nul nasconde l'output del comando. Se non avesse >nul , produrrebbe:

    1 File Moved

Eliminazione di file

Utilizzando il comando DEL (alias per ERASE ), è possibile rimuovere i file.

@echo off
del foo.ext

Questo comando cancellerà foo.ext dalla directory corrente. Si può anche specificare il percorso e il file, come ad esempio:

del C:\Foo\Bar\Baz.ext

Ma è sempre l'ideale per mettere le virgolette ( " ) attorno ai percorsi, vedere qui per il motivo.


Sono disponibili alcuni flag per DEL .

Bandiera Funzione
/P Richiede all'utente prima di eliminare i file
/F Rimuovere con forza i file di sola lettura
/S Rimuovi file (s) in sottodirectory
/Q Previene il prompt dell'utente
/A Filtro: rimuovi solo file specifici attribuiti,
usare il carattere - significa non attribuito come quel tipo.

Copia file senza xcopy

In questo esempio , l'utente BoeNoe ha mostrato come utilizzare il comando xcopy per copiare i file. C'è anche un comando aggiuntivo chiamato copy .

Qui c'è un semplice esempio:

copy foo.ext bar.ext

foo.ext su bar.ext e crea bar.ext quando non esiste. Possiamo anche specificare percorsi per il file, ma è sempre l'ideale per mettere virgolette ( " ) attorno ai percorsi, vedere qui per il motivo.


Ci sono anche molte bandiere disponibili per la copy , vedi copy /? o help copy su un prompt dei comandi per vedere di più.

Modifica di nth Line di un file

File batch non viene fornito con un metodo incorporato per la sostituzione di n esima riga di un file ad eccezione di replace e append ( > e >> ). Utilizzando for cicli, siamo in grado di emulare questo tipo di funzione.


@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
  • Lo script principale chiama la funzione replaceLine , con il nomefile / quale riga modificare / e la stringa da sostituire.

  • La funzione riceve l'input

    • Attraversa tutte le linee e le fa echo su un file temporaneo prima della linea di sostituzione
    • Fa echo alla linea di sostituzione del file
    • Continua a restituire il resto del file
    • Copia il file temporaneo nel file originale
    • E rimuove il file temporaneo.
  • Lo script principale riprende il controllo e type il risultato.



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow