Im essayant de créer un fichier batch qui copiera unrépertoire vers un autre répertoire cependant, le répertoire que je souhaite copier a aussi une partie du nom généré aléatoirement, c'est-à-dire "jibberish.Directory1". Y a-t-il un moyen de faire cela ?
J'essayais quelque chose comme:
XCOPY "%~dp0DATAtest" "%APPDATA%Application1Directory*Directory1" /E /C /R /I /K /Y
mais échec total. Toute aide serait grandement appréciée, merci!
Réponses:
0 pour la réponse № 1xcopy ne prend pas en charge les caractères génériques dans les noms de répertoire. Par conséquent, un pour boucle est en outre nécessaire pour cette tâche qui est la suivante:
Dans le dossier C:Temp
il y a le fichier batch DuplicateFolder.bat
avec le code ci-dessous.
Le dossier à dupliquer est DATAtest
dans le répertoire du fichier batch.
C:TempDATAtest
contient:
- SubFolder1
- FirstFile.txt
- Second File.txt
- Sous-dossier 2
- ListFile.csv
- Readme.txt
Tous ces sous-dossiers et fichiers doivent être copiés dans chaque sous-dossier dans %APPDATA%Application1Directory
se terminant par un nombre après un point.
%APPDATA%Application1Directory
contient par exemple:
- Dossier abc.1
- Dossier e-g.2
- Dossier h à k.3
- Dossier last.4
- Dossier non modifié
Le dernier dossier doit être ignoré car il ne contient pas de point ni de chiffre à la fin.
Le résultat doit être par exemple pour le premier sous-dossier Folder abc.1
:
- Dossier abc.1
- SubFolder1
- FirstFile.txt
- Second File.txt
- Sous-dossier 2
- ListFile.csv
- Readme.txt
- SubFolder1
Code de DuplicateFolder.bat
est:
@echo off
set "SourceFolder=%~dp0DATAtest"
for /D %%F in ("%APPDATA%Application1Directory*") do (
if not "%%~xF" == "" %SystemRoot%System32xcopy.exe "%SourceFolder%" "%%~F" /E /C /Q /R /I /K /Y >nul
)
set "SourceFolder="
Ce fichier batch vérifie simplement si le nom du dossier contient un point sans vérifier si la chaîne après le point - "l'extension de fichier" référencée avec %%~xF
- est vraiment un nombre. Ce test très simple est très rapide.
Pour plus de détails sur la commande utilisée pour et une explication des paramètres et des références de variables de boucle spéciales ouvrent une fenêtre d'invite de commandes, exécutent for /?
et lisez la sortie d'aide de cette commande dans la fenêtre de la console.