2015-09-11 2 views
0

J'ai besoin de copier plusieurs fichiers de sauvegarde dans un dossier partagéComment copier des fichiers à un emplacement spécifique dans plusieurs dossiers vers un lecteur partagé à l'aide de la commande windows?

La Source copier des regards comme celui-ci ci-dessous (il y a d'autres fichiers inbetween mais ne sont pas intéressés à les copier

C:\BackupLocation\BCK1\Logs\myLog1.log 
C:\BackupLocation\BCK1\Logs\myLog2.log 
C:\BackupLocation\BCK1\Logs\myLog3.log 

C:\BackupLocation\BCK2\Logs\myLog1.log 
C:\BackupLocation\BCK2\Logs\myLog2.log 
C:\BackupLocation\BCK2\Logs\myLog3.log 

C:\BackupLocation\BCK3\Logs\myLog1.log 
C:\BackupLocation\BCK3\Logs\myLog2.log 

Je dois être capable de copier un fichier journal avec les mots « mylog » dans le nom du fichier.

Je pensais à faire un pour regarder faire obtenir le répertoire, puis en utilisant robocopy pour copier les fichiers sur mon emplacement partagé

FOR /d /r %ROOT_SRC_BACKUP_LOCATION% %%G in (*logs*) DO (
Pushd %%G 

Robocopy %%G "mybackup location directory" *mylog* /S 

Popd) 

Mais le problème est que le répertoire des journaux détecte le répertoire d'autres logs ... par exemple, j'ai un autre répertoire des journaux ici

C:\BackupLocation\BCK3\server\Logs\IDontCareAboutTheLogsIntheServerDirectory.log 

Quel est le moyen le plus efficace pour copier toutes les années mylog dans le dossier C:\BackupLocation\BCKXX\Logs\ ?

+2

Je ne sais pas la question a toutes les informations, mais tout ce que vous semblez avoir besoin est en omettant le '/ commutateur s' et l'ensemble du code requis serait' robocopy « % ROOT_SRC_BACKUP_LOCATION% » " mybackup location directory "* mylog *' sans la boucle 'for'. – wOxxOm

+0

@wOxxOm J'ai fait des erreurs plus tôt dans ma réponse - en disant simplement que votre code copiera les fichiers du dossier unique '"% ROOT_SRC_BACKUP_LOCATION% "' et qu'il n'y a aucun des fichiers cibles dans ce dossier. – foxidrive

Répondre

2

Test cette:

@echo off 
Pushd "C:\BackupLocation" 
    for /d %%a in (bck*) do (
     if exist "%%a\logs\" Robocopy "%%a\logs" "d:\mybackup location directory\%%a\logs" "*mylog*.log" 
    ) 
Popd 
+0

Si je l'ai bien fait, le répertoire source. pour 'robocopy' devrait être' "%% a \ Logs" 'plutôt que' "%% a" ', n'est-ce pas? – aschipfl

+0

@aschipfl Le dossier de travail a été modifié et robocopy utilisera un chemin relatif vers le répertoire de travail. C'est la théorie et je ne l'ai pas testé pour voir ce qui se passe dans la pratique. – foxidrive

+1

Puisque vous utilisez '/ S' pour' robocopy', il y a un risque de copier des fichiers de mauvais endroits ... – aschipfl