Il existe plusieurs façons de copier des fichiers du même répertoire que le fichier batch lui-même. Voici quelques exemples, démontrant différents scénarios et robustesse :
Méthode 1 :Utiliser `%~dp0` (la plus simple et la plus recommandée)
Cette méthode utilise la variable `%~dp0`, qui s'étend au lecteur et au chemin du fichier batch actuel. Il s’agit de l’approche la plus fiable et la plus recommandée.
```lot
@echo désactivé
copier "%~dp0myfile.txt" "%~dp0destinationfolder\myfile.txt"
```
* `%~dp0` :obtient le lecteur et le chemin du fichier batch.
* `myfile.txt` :Le fichier que vous souhaitez copier. Remplacez-le par votre nom de fichier réel.
* `destinationfolder` :Le nom du dossier dans lequel vous souhaitez copier le fichier. Créez ce dossier au préalable s'il n'existe pas. Vous pouvez également utiliser des chemins absolus ici si nécessaire.
Méthode 2 :Utiliser `cd` (Moins robuste)
Cette méthode remplace le répertoire par l'emplacement du fichier de commandes avant d'effectuer la copie. Il est moins robuste car il repose sur la définition correcte du répertoire de travail actuel.
```lot
@echo désactivé
pushd "%~dp0"
copier le dossier de destination monfichier.txt\monfichier.txt
popd
```
* `pushd "%~dp0"` :remplace le répertoire par l'emplacement du fichier batch. `pushd` enregistre le répertoire actuel, vous permettant de le restaurer ultérieurement.
* `popd` :restaure le répertoire d'origine.
Méthode 3 :Gestion des espaces dans les chemins de fichiers (Crucial pour la robustesse)
Si vos noms de fichiers ou chemins de dossiers contiennent des espaces, vous *devez* les citer. Les exemples ci-dessus le font déjà, mais cela mérite d'être souligné. Le fait de ne pas citer entraînera des erreurs.
Exemple avec des espaces :
```lot
@echo désactivé
copier "%~dp0Mon fichier.txt" "%~dp0Dossier de destination\Mon fichier.txt"
```
Méthode 4 :Copier plusieurs fichiers à l'aide de caractères génériques
Vous pouvez utiliser des caractères génériques pour copier plusieurs fichiers à la fois :
```lot
@echo désactivé
copier "%~dp0*.txt" "%~dp0destinationfolder\"
```
Cela copie tous les fichiers `.txt` du répertoire du fichier batch vers le `destinationfolder`.
Gestion des erreurs (important)
Pour des scripts plus robustes, ajoutez une gestion des erreurs pour vérifier si la copie a réussi :
```lot
@echo désactivé
copier "%~dp0myfile.txt" "%~dp0destinationfolder\myfile.txt">nul 2>&1
si %ERRORLEVEL% ==0 (
echo Fichier copié avec succès.
) autre (
echo Erreur de copie du fichier. Code d'erreur :%ERRORLEVEL%
)
```
* `>nul 2>&1` :supprime la sortie de la commande `copy`.
* `if %ERRORLEVEL% ==0` :Vérifie le niveau d'erreur. « 0 » signifie le succès.
N'oubliez pas de remplacer `"myfile.txt"`, `"destinationfolder"` et autres espaces réservés par vos noms de fichiers et de dossiers réels. Testez toujours minutieusement vos fichiers batch. Une gestion incorrecte des espaces dans les noms de fichiers et les chemins d’accès est une source courante d’erreurs.
|