> Tous les forums > Forum Windows 7
 Batch de recherche et copie de multiple fichier.Sujet résolu
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
makulafo
  Posté le 26/09/2014 @ 00:57 
Aller en bas de la page 
Petit astucien

Bonsoir,

je souhaite rechercher une liste de 500 fichiers qui se trouve dans plusieurs sous-repertoires d'un mega dossier de plus de 900000.

puis je dois copier ces fichiers vers un autre dossier

pour faire ces copies multiples, j'utilise file finder ,mais je ne peux pas effectuer cette recherche + copie sur plus d'une dizaine de fichiers en meme temps en raison de la limitation de la zone de saisie des nom de fichiers

Merci de me donner un coup de main



Modifié par makulafo le 26/09/2014 07:31
Publicité
Constance
 Posté le 26/09/2014 à 08:37 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Salut .o/

Comment identifies-tu les fichiers à copier ? As-tu une liste précise, qu'on puisse envisager d'exploiter avec une boucle du genre "for /f %%a in (liste.txt) do ..." ?

makulafo
 Posté le 26/09/2014 à 09:25 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Bonjour constance,

je confirme que j'ai la liste explicite de mes 543 fichiers de façon explicites qui puisse être exploité via ta boucle.

Constance
 Posté le 26/09/2014 à 12:17 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

OK.

Est-il possible que certains noms de fichiers existent en double dans le "méga dossier" (dans différents sous-dossiers par exemple) ? Si oui, comment le programme doit-il réagir ?

makulafo
 Posté le 26/09/2014 à 21:53 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

il n'y'a pas de doublons possible, car le resultat provient d'une requête de base de donnée qui s'en assure.

Mais pour prevoir ce cas : ne rien faire si le fichier a deja été copié et passer au suivant

Constance
 Posté le 27/09/2014 à 18:09 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Re .o/

Voici donc un script, à enregistrer en .bat ou .cmd, qui fait à peu de choses près ce que tu as demandé : http://pastebin.fr/36950

Il faudra bien sûr changer les valeurs des 4 variables définies au début :
- srclist est la liste des fichiers, comportant un nom de fichier par ligne
- targetdir est le dossier vers lequel la copie doit être effectuée
- srcdir est le "méga-dossier" dans lequel il faut chercher
- log est un fichier journal des opérations (optionnel, si tu n'en veux pas, assigne-lui la valeur NUL)

Contrairement à ce que tu as demandé, en cas de doublon, le script écrase sans confirmation... mais puisque tu as dit qu'il ne devrait pas y avoir de doublon ^^

Constance
 Posté le 06/10/2014 à 13:16 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

:up:

Des nouvelles ? Tu as eu l'occasion de tester ?

makulafo
 Posté le 10/10/2014 à 23:16 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Bonsoir constance,

J'ai testé, mais ça ne marche que lorsque mon dossier de destination et ma source sont sur le le même disque local

lorsque le répertoire source et la destination ne sont pas sur le même disque, ça ne marche pas.

Dans la réalité, mes répertoires sont sur des disques réseaux différents.

j'ai testé le chemin réseau complet dans la destination : \\192.165.10..... mais ça ne marche pas

j'ai testé le chemin via le lecteur réseau I:\projets ...... mais ça ne marche pas.

Regarde le fichier LOG, c'est assez clair :http://textup.fr/107133hr

mais je ne comprends pas pourquoi, est ce les commandes . en existe t'il de spécifiques pour le réseau ?

faudrait t-il que mon batch dispose de droits ? pourtant je l’exécute depuis mon poste avec ma session admin.

Regarde le log et dis moi ce que tu en penses.

@+

Constance
 Posté le 11/10/2014 à 00:58 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Re :}

Hmm c'est curieux, a priori dès lors que tu as les droits requis pour lire les fichiers à la source et écrire à destination, ça devrait fonctionner, que ce soient les mêmes lecteurs ou non, et même avec des chemins UNC (c'est-à-dire du type "\\serveur\partage\sous-dossier" )… je n'ai pas fait ce test-là mais pour autant que je sache, ça ne devrait pas avoir d'influence.
Dans le listing des fichiers à rechercher, il y a bien uniquement des noms de fichiers, sans chemin ni lettre de lecteur, ni guillemet ?

Publicité
makulafo
 Posté le 11/10/2014 à 12:21 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Je te confirme que dans le fichier TXT , les fichiers sont sans référence à un chemin et il n'y a ni guillemet ni autre caractère spécial.

Pour me dépanner j'ai crée tous les fichiers et dossiers de ton batch dans un dossier temporaires sur le disque d’où je recherche les fichiers.

Puis je copie manuellement les fichiers du dossier "destination " vers la véritable destination , c'est à dire sur un autre disque réseau.

mais je n'ai pas renoncé à faire fonctionner le batch comme il faut. Donc toute aide sera la bienvenue.

@+

Constance
 Posté le 14/10/2014 à 13:06 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Re ^^

OK, j'ai fait des tests avec une version beaucoup plus "bavarde" et j'ai ainsi trouvé les causes du problème.

En fait, j'avais fait deux erreurs bêtes :
1 - j'ai oublié dans la commande dir ligne 20 d'ajouter un /s pour qu'il parcoure tous les niveaux de sous-dossiers, et non pas seulement le premier niveau.
2 - la variable %%d inclut déjà %srcdir%, donc toutes les occurrences de "%srcdir%\%%d" doivent être remplacées par "%%d"

Voici donc une version corrigée : http://pastebin.fr/37151

Edit : j'ai réfléchi encore un peu plus au problème durant mon trajet pour rentrer du boulot, et j'ai apporté quelques améliorations au script, voir ici : http://pastebin.fr/37166
- on ne parcourt plus qu'une fois l'arborescence, ce qui devrait accélérer l'opération assez nettement s'il y a de nombreux sous-dossiers, en particulier depuis un partage réseau
- je fais désormais appel à une fonction aussi bien pour rechercher dans la racine du dossier ou dans ses sous-dossiers, ce qui simplifie le code.

Comme d'habitude, il faudra adapter les variables sur les premières lignes.



Modifié par Constance le 16/10/2014 15:24
makulafo
 Posté le 25/10/2014 à 22:49 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

bonsoir constance,

Je suis allé au bout de l'utilisation du batch.

- Je confirme que le batch s’exécute en réseau

- Je confirme que le second batch est plus puissant que le précédent.

En réalité, la limite vient d'une part de la masse de données à scruter et du niveau d'imbrication des sous-répertoires.

du coup je me suis adapté . j'ai reorganisé les data de maniere à disposer de repertoires moins complexe avec maximum 2 sous répertoires, mais plus de criteres d'archivages donc plus de repertoires racine.

je dispose en moyenne de 25000 fichiers dans chaque arborescence (une trentaine)

avec cette organisation je n'ai plus de probleme pour effectuer des recherches avec ton batch.

Merci pour tout

Page : [1] 
Page 1 sur 1

Vous devez être connecté pour poster des messages. Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !


Sujets relatifs
Problème lecture et copie de fichier (La visioneuse windows ne peut affi..
Interdire la copie de fichier pour un groupe d'utilisateur
Copie de fichier accès refusé
fichier batch avec espaces (pas trouver la solutions sur les autres sujets)
AIde pour realiser Un batch de deplacement conditionnel de fichier
Copie fichier film zzzz.mkv vers clef usb
Aide à l'ecriture d'un fichier batch ou script de deplacement de fichier.
ou est passée ma copie de fichier
Recherche grand fichier !!!!!!!!
utilitaire recherche fichier
Plus de sujets relatifs à Batch de recherche et copie de multiple fichier.
 > Tous les forums > Forum Windows 7