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.
  • Le script principal récupère le contrôle et type le résultat.



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow