/ / batch fichier xcopy dans un répertoire partiellement inconnu avec un point (.) dans - batch-file, xcopy

fichier de commandes xcopy dans un répertoire partiellement inconnu avec un point (.) dans - batch-file, xcopy

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 № 1

xcopy 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

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.