batch-file
Gestione file in file batch
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.
- Attraversa tutte le linee e le fa
Lo script principale riprende il controllo e
type
il risultato.