Batch Index du Forum
S’enregistrerRechercherFAQMembresGroupesConnexion
Répondre au sujet Page 1 sur 4
Aller à la page: 1, 2, 3, 4  >
Copie de fichiers avec critères .
Auteur Message
Répondre en citant
Message Copie de fichiers avec critères . 
Bonjour,

Je suis nouveau dans ce forum, et j'espère avoir posté ma question au bon endroit ....

J'expose :

dans un répertoire C:\toto j'ai plusieurs sous-répertoires (nombre variable) nommés pour l'exemple \1\, \2\, etc ; donc C:\toto\1\ etc....
Ces sous-répertoires contiennent des fichiers divers en nombre variable, dont 1 contenant une chaine de caractères "dans le contenu du fichier" par exemple le mot "chaine" .

Je désire copier sur une autre unité, avec l'arborescence identique les fichiers contenant la chaine de caractères .

Voilà .....
Si un cerveau avisé pouvait me proposer une solution, avec la gentillesse de me le documenter pour que je ne l'exécute pas bêtement .... Wink

Une solution m'avait été proposée, mais la chaine était située dans le nom du fichier, ce qui ne me convient pas, et comme je ne suis pas fichu
de rectifier ... parce que je ne comprends pas toutes les subtilités :

Code:
FOR /F "delims=" %%A IN ('DIR /B /S *chaine*.txt') DO (
IF NOT EXIST D:%%~pA MKDIR "D:%%~pA"
COPY "%%A" "D:%%~pnxA"
)
PAUSE


Il n'y a peut-être pas grand-chose à modifier .... Neutral



Message Publicité 
PublicitéSupprimer les publicités ?


Répondre en citant
Message Copie de fichiers avec critères . 
La chaine que tu cherche est dans le nom du fichier ou dans le texte du fichier ?

Si c'est dans le texte du fichier, voici le code qu'il te faut !
Tout bête, on cherche les sous répertoires, on "lis" le contenu en cherchant la chaine, ensuite on copie.

Code:

:: chemin d'origine à modifier
set OD=c:\toto
:: chemin de destination à modifier
set FD=d:\toto
:: chaine recherchée à modifier
set KEY=blablabla

for /f "tokens=*" %%A in ('dir %OD% /b') do (
  for /f "tokens=*" %%B in ('dir %OD%\%%A /b') do (
    for /f "tokens=*" %%C in ('type %OD%\%%A\%%B ^| Find "%KEY%"') do (
    xcopy %OD%\%%A\%%B %FD%\%%A\ >nul
    )
  )
)





______________________________________________________


L'ignorance est un fléau qui engendre la haine et la mort
La connaissance est une arme qui surpasse toutes les autres
Partagez votre savoir, sinon il sera perdu à jamais
Répondre en citant
Message Copie de fichiers avec critères . 
Merci stryk,

Cà marche nickel.

Sauf que pour l'exemple, j'ai choisi le mot "chaine" ..... et dans la réalité,
la chaine de caractère est différente et est : [cam_bonnet2] (y compris les crochets).

Si je remplace le mot "chaine" dans la valeur de set Key, çà ne fonctionne plus ..... Mad



Répondre en citant
Message Copie de fichiers avec critères . 
Bien sûr, il y a la casse des caractères ! Razz

Je n'ai pas fais attention, il y a un C (majuscule) au début de ma chaine de caractères !
Donc, çà fonctionne bien !

Et je t'en remercie . Wink

Juste la question subsidiaire :

Je risque d'avoir cette chaine de caractères avec des caractères Majuscules, ou minuscules ..... comment assurer ? Mad



Répondre en citant
Message Copie de fichiers avec critères . 
Il suffit juste de placer le commutateur /I après le "Find", comme ceci:
Code:

Find /I "%KEY%


Wink




______________________________________________________


L'ignorance est un fléau qui engendre la haine et la mort
La connaissance est une arme qui surpasse toutes les autres
Partagez votre savoir, sinon il sera perdu à jamais
Répondre en citant
Message Copie de fichiers avec critères . 
C'est juste ce que je cherchais ! Shocked

Un grand merci, Stryk . Embarassed Embarassed



Répondre en citant
Message Copie de fichiers avec critères . 
Pas de souci, si il n'y avait personne à aider, je ne servirais à rien ici Mr. Green
Je note [RESOLU] sur le titre !
@+




______________________________________________________


L'ignorance est un fléau qui engendre la haine et la mort
La connaissance est une arme qui surpasse toutes les autres
Partagez votre savoir, sinon il sera perdu à jamais
Répondre en citant
Message Copie de fichiers avec critères . 
Embarassed je pense que j'aurais quelques modifs à te demander encore sur ce sujet (l'utilisation réelle est souvent différente d'un exemple) .
Est-ce que je repartirais sur ce post ?
Faut-il en ouvrir un autre ..... Question



Répondre en citant
Message Copie de fichiers avec critères . 
Si c'est en rapport avec ta demande d'origine, on peut continuer ici Razz




______________________________________________________


L'ignorance est un fléau qui engendre la haine et la mort
La connaissance est une arme qui surpasse toutes les autres
Partagez votre savoir, sinon il sera perdu à jamais
Répondre en citant
Message Copie de fichiers avec critères . 
Je t'en remercie, et je vais te donner plus d'explications .

Ce n'est pas aisé de demander de l'aide en présentant un exemple compliqué dès le départ, surtout quand on est nul en batch !
C'est pourquoi j'ai simplifié .
Avant tout, je tiens à te dire que je ne suis pas pressé, je suis retraité, et il s'agit de loisirs .... alors .... Mort de Rire

En fait, il s'agit de fichiers *.ini, descriptifs de parties visuelles de voitures dans un jeu de simulation (RBR).
Ces fichiers sont constitués en section entre crochets (comme ma chaine) créés par les programmeurs des voitures.
Et comme il n'y a pas de règle de syntaxe établie, chaque programmeur fait comme chez lui quand il crée ! Laughing
Ces sections sont modifiables par l'utilisateur, à sa convenance, pour changer les aspects visuels du modèle présenté à l'écran
que ce soit le poste de pilotage, où les accessoires externes visibles.

Le soucis, à chaque mise à jour, c'est qu'il y a écrasement des fameux fichiers .... et c'est pourquoi je désire m'en faire une copie .

Donc, les fichiers sont contenus dans des sous-répertoires (plusieurs niveaux selon les options proposées par le programmeur)
qui peuvent avoir des noms bizarres, avec espaces... des +, des_, des Maj et des min ,
tels que :"L:\RSRBR_2012\Cars\Citroen_DS3_R3\Light ON + Extralights\"
Bref tout ce qui peut contrarier pour faire du batch !
On se retrouve avec des path assez longs et "tordus" .

Le fichier contenant les modèles de voitures où sont localisés les fichiers *.ini que je désire copier, fait 5.5Go, 815 sous-répertoires et 4633 fichiers ..... Embarassed .
Vu qu'il n'y a que des *.ini qui agissent sur les aspects, je pense qu'il serait bon de limiter la recherche aux *.ini, cela devrait accélérer la scrutation.

J'ai vu beaucoup d'erreurs dans la fenêtre CMD, et je suis en cours d'analyse pour essayer de comprendre "où" et "pourquoi", et te remonter les infos, pour que tu puisse modifier en conséquences .... Embarassed

Peut-être qu'en créant un fichier.log pour voir le déroulement du batch ...

Cà peut être long, mais je vois que tu as une volonté d'aider ..... Razz



Répondre en citant
Message Copie de fichiers avec critères . 
gmarin a écrit:
je suis retraité, et il s'agit de loisirs

Shocked wow, respect à toi, moi quand je serais à la retraite, j'irais pêcher et promener mes vieux os au quatre coins du monde,
un truc loin des PC en tout cas Mr. Green

Pareil, prends ton temps pour analyser !
Au pire on peut sauvegarder tous les *.ini en copiant leurs chemins d'origine dans un fichier pour pouvoir les récupérer au bon endroit ...

Bon courage Okay




______________________________________________________


L'ignorance est un fléau qui engendre la haine et la mort
La connaissance est une arme qui surpasse toutes les autres
Partagez votre savoir, sinon il sera perdu à jamais
Répondre en citant
Message Copie de fichiers avec critères . 
stryk a écrit:
Shocked wow, respect à toi, moi quand je serais à la retraite, j'irais pêcher et promener mes vieux os au quatre coins du monde,
un truc loin des PC en tout cas Mr. Green

Pas encore dégoûté depuis 1979 ..... Mort de Rire


Bon,

Déjà, pour utiliser des noms de répertoire qui contiennent des espaces, j'ai mis des "" sur les variables A & B .

Code:
for /f "tokens=*" %%A in ('dir %OD% /b') do (
  for /f "tokens=*" %%B in ('dir %OD%\"%%A" /b') do (
    for /f "tokens=*" %%C in ('type %OD%\"%%A"\"%%B" ^| Find /I "%KEY%"') do (
    xcopy %OD%\"%%A"\"%%B" %FD%\"%%A"\ >nul


Cà va mieux..... Razz

Par contre, si je laisse tous les sous-répertoires (158 actuellement) dans le répertoire Cars\, çà s'arrête en cours de route, le prompt clignotant,
et plus rien (j'ai attendu au moins 1/2 heure...)
J'ai 2Gb de mémoire, de la place sur les disques ..... que devrais-je soupçonner ? Question

Alors, pour limiter le temps ( Mr. Green ), je n'ai pris qu'un répertoire (qui me donne les erreurs que j'ai observées)
Voilà en image :
Dans les sous-répertoires, il y a bien sur des fichiers *.txt et *.ini



Je mets une copie du déroulement de la fenêtre CMD :


Voilà ce que je constate : çà se passe bien pour le sous-répertoire du niveau 1 (L:\TEMP\cars\Citroen_DS3_R3)
Le répertoire et le fichier concernés sont bien copiés sur la cible : L:\TMP\cars\Citroen_DS3_R3.

Mais çà met une erreur "Accès refusé." pour les sous-répertoires du niveau 2 : L:\TEMP\cars\Citroen_DS3_R3\Light OFF et les autres .... Mad
Là, j'ai beau réfléchir, ce n'est pas encore à ma portée .... Crying or Very sad

Modification sûre à faire : limiter la recherche de la chaine aux fichiers *.txt et *.ini . Cool

PS: Pour ma retraite, une de mes principales préoccupations : http://gerard.marin.free.fr/RSRBR/rallye.htm Mort de Rire



Répondre en citant
Message Copie de fichiers avec critères . 
Bonjour,

J'ai créé un batch (Cp) qui te permet (je pense) de faire ce que tu recherche.

En effet son mode sauvegarde ou copie permet de sauvegarder une arborescence de dossiers/fichiers et avec la possibilité d'y ajouter un filtre (ex: *.ini *.txt)

Le mode sauvegarde si exécuté périodiquement te permet de configurer un mode incrémentiel ou différentiel et de supprimer automatiquement les vieilles archives ou quand il y a un nombre d'archive trop grande.


Et sinon au pire tu peux aussi simplement utiliser une boucle qui parcours ton arborescence et utilise findstr + xcopy pour obtenir le même résultat.


avec cp sa donnerai:
Code:

cp "source" "destination" "-filtre-*.ini *.txt"





______________________________________________________
Mes principales réalisations: Cp (batch) et IPSvc (autoit)
Répondre en citant
Message Copie de fichiers avec critères . 
Ah ok ok !
J'avais juste prévu 1 sous-dossier, c'est pour cela que ça ne fonctionne pas Mr. Green
Le code de cautex devrait bien te convenir Okay

Tu fais donc partie de cette nouvelle espèce qu'on rencontre de plus en plus: les old-geeks Laughing




______________________________________________________


L'ignorance est un fléau qui engendre la haine et la mort
La connaissance est une arme qui surpasse toutes les autres
Partagez votre savoir, sinon il sera perdu à jamais
Répondre en citant
Message Copie de fichiers avec critères . 
stryk a écrit:
Ah ok ok !
J'avais juste prévu 1 sous-dossier, c'est pour cela que ça ne fonctionne pas Mr. Green
Le code de cautex devrait bien te convenir Okay

Tu fais donc partie de cette nouvelle espèce qu'on rencontre de plus en plus: les old-geeks Laughing

Bon, va falloir que je complète mon vocabulaire ! Mort de Rire


Donc, si j'ai compris, la boucle "C" c'est le dernier niveau de la scrutation ?
Comment fait-on pour ne pas limiter le niveau de scrutation ? ..... Embarassed

Qui est Cautex ? Shocked (F3- rechercher ..... Mr. Green )
Embarassed Embarassed Embarassed je n'avais pas vu le post au-dessus ..... Exclamation Wink



Message Copie de fichiers avec critères . 


Montrer les messages depuis:
Répondre au sujet Page 1 sur 4
Aller à la page: 1, 2, 3, 4  >
  



Index | créer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
Copyright 2008 - 2016 // Batch