batch-file
Gestion des fichiers dans les fichiers de commandes
Recherche…
Introduction
Dans cette rubrique, vous allez apprendre à créer, éditer, copier, déplacer et supprimer des fichiers par lots.
Création d'un fichier en lot
Il peut y avoir plusieurs raisons pour lesquelles vous souhaitez créer un fichier texte par lot. Mais quelle que soit la raison, voici comment vous le faites.
Si vous souhaitez remplacer un fichier texte existant, utilisez >
. Exemple:
@echo off
echo info to save > text.txt
Mais si vous souhaitez ajouter du texte à un fichier texte déjà utilisé >>
. Exemple:
@echo off
echo info to save >> text.txt
Si vous devez enregistrer plusieurs lignes de texte dans un fichier, utilisez ()>text.txt
Exemple:
@echo off
(echo username
echo password)>text.txt
Comment copier des fichiers en batch
Vous souhaiterez peut-être copier des fichiers d'un endroit à un autre. Dans cet exemple, nous allons vous apprendre.
Vous pouvez utiliser la commande xcopy
. La syntaxe est xcopy c:\From C:\To
Exemple:
@echo off
xcopy C:\Folder\text.txt C:\User\Username\Desktop
Il existe également des commutateurs que vous pouvez utiliser. Si vous souhaitez les afficher, ouvrez l’invite de commandes par le Start Menu -> Accessories -> Command Prompt
, puis tapez xcopy /?
Déplacement de fichiers
En utilisant la commande move, vous pouvez déplacer les fichiers:
@echo off
cd C:\Foo\Bat\Baz
move /Y Meow.bat "Meow Folder" >nul
Meow.bat
représente le fichier à déplacer. Le "Meow Folder" déplace Meow.bat
dans le Meow Folder
. /Y
dit de ne pas demander confirmation. Remplacer cela par /-Y
rend l'invite du fichier de commandes pour confirmation. Le >nul
masque la sortie de la commande. S'il n'y avait pas >nul
, cela produirait:
1 File Moved
Supprimer des fichiers
En utilisant la commande DEL
(alias for ERASE
), vous pouvez supprimer des fichiers.
@echo off
del foo.ext
Cette commande supprime foo.ext
du répertoire en cours. On peut également spécifier le chemin et le fichier, tels que:
del C:\Foo\Bar\Baz.ext
Mais il est toujours idéal de mettre des guillemets ( "
) autour des chemins, voir ici pour la raison.
Il y a quelques drapeaux disponibles pour DEL
.
Drapeau | Fonction |
---|---|
/P | Invite l'utilisateur avant de supprimer le ou les fichiers |
/F | Supprimer de force le ou les fichiers en lecture seule |
/S | Supprimer le ou les fichiers dans les sous-répertoires |
/Q | Empêche l'invite de l'utilisateur |
/A | Filtre: ne supprime que le fichier attribué spécifique, |
en utilisant le caractère - signifie non attribué comme ce type. |
Copier des fichiers sans xcopy
Dans cet exemple , l'utilisateur BoeNoe a montré comment utiliser la commande xcopy
pour copier des fichiers. Il existe également une commande supplémentaire appelée copy
.
Voici un exemple simple:
copy foo.ext bar.ext
Cela copie foo.ext
dans bar.ext
et crée un bar.ext
quand il n'existe pas. Nous pouvons également spécifier des chemins vers le fichier, mais il est toujours idéal de placer des guillemets ( "
) autour des chemins, voir ici pour la raison.
Il y a aussi beaucoup de drapeaux disponibles pour la copy
, voir copy /?
ou help copy
sur une invite de commande pour en savoir plus.
Modification de la nième ligne d'un fichier
Fichier batch ne vient pas avec une méthode intégrée pour remplacer n
ième ligne d'un fichier , sauf replace
et append
( >
et >>
). En utilisant for
boucles, nous pouvons émuler ce type de fonction.
@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
Le script principal appelle la fonction
replaceLine
, avec le nom de fichier / la ligne à modifier / et la chaîne à remplacer.Fonction reçoit l'entrée
- Il parcourt toutes les lignes et les
echo
à un fichier temporaire avant la ligne de remplacement - Il fait
echo
la ligne de remplacement du fichier - Il continue à sortir au reste du fichier
- Il copie le fichier temporaire dans le fichier d'origine
- Et supprime le fichier temporaire.
- Il parcourt toutes les lignes et les
Le script principal récupère le contrôle et
type
le résultat.