OVH Cloud OVH Cloud

script pour copier 1000 fichiers

25 réponses
Avatar
Hugolino
Salut les kroteux

Le monde est mal fait, je suis parfois obliger de filer un coup de main
à mon paternel qui récupère une sélection de 1000 photos dans son petit
logiciel d'indexation (MyAlbum) qui tourne sous Windows.

Gros délire: pour me graver un CD avec les 1000 photos où l'on voit ma
bobine, il note, *pour chaque photo*, le nom indiqué par MyAlbum, ouvre
le dossier contenant la photo pour la copier/coller vers le dossier
temporaire qui servira à la gravure.
En tant que *nixien, j'ai compris que c'est pas lui qui fait bosser son
PC, mais son PC qui le fait bosser.

Avec MyAlbum, j'ai réussi à exporter un fichier contenant le nom complet
des 1000 photos (avec le nom du répertoire), un sur chaque ligne.

Ce que je voudrais maintenant, c'est avoir un script qui lirait chaque
ligne de ce fichier pour copier le fichier dans le dossier temporaire.

Le fichier se présente comme suit:
8<-----------8<---------8<----------8<----------8<----------8<----------8<
C:\ALBUMS\Gif sur Yvette\1970\CD10\C038-05.JPG
C:\ALBUMS\Gif sur Yvette\1971\CD11\C043-12.JPG
...
E:\ALBUMS\La Motte Beuvron\1984\CD20\C001-01.JPG
E:\ALBUMS\La Motte Beuvron\1984\CD20\C002-03.JPG
...
X:\ALBUMS\Paris\1994\CD30\C014-04.JPG
X:\ALBUMS\Paris\1994\CD30\C014-05.JPG
8<-----------8<---------8<----------8<----------8<----------8<----------8<

Il ne reste donc plus qu'à écrire un script qui lise chaque ligne du
fichier pour faire un copy vers C:\Dossier_Temp qui sera utilisé pour
graver les photos.

En plus, votre éventuelle réponse (tout dépend de votre réaction quand
on vous traite de kroteux ;-) me permettrait d'apprendre un peu de
DOS-shell et donc d'administrer un peu les machines de mes pauvres
collègues du lycée.

En fait c'est un défi ;-)


Merci de votre aide

--
> la moto pour moi ça reste du ludique et du festif
Et tu roules sur une BM, mauvaise pioche ;o)
Hugo (né il y a 1 336 498 292 secondes)

10 réponses

1 2 3
Avatar
rm
Le jeudi 31 août 2006 à 22:24, Hugolino a écrit :

Salut les kroteux



Salut,

Le monde est mal fait, je suis parfois obliger de filer un coup de main
à mon paternel qui récupère une sélection de 1000 photos dans son petit
logiciel d'indexation (MyAlbum) qui tourne sous Windows.

Gros délire: pour me graver un CD avec les 1000 photos où l'on voit ma
bobine, il note, *pour chaque photo*, le nom indiqué par MyAlbum, ouvre
le dossier contenant la photo pour la copier/coller vers le dossier
temporaire qui servira à la gravure.
En tant que *nixien, j'ai compris que c'est pas lui qui fait bosser son
PC, mais son PC qui le fait bosser.

Avec MyAlbum, j'ai réussi à exporter un fichier contenant le nom complet
des 1000 photos (avec le nom du répertoire), un sur chaque ligne.

Ce que je voudrais maintenant, c'est avoir un script qui lirait chaque
ligne de ce fichier pour copier le fichier dans le dossier temporaire.

Le fichier se présente comme suit:
8<-----------8<---------8<----------8<----------8<----------8<----------8<
C:ALBUMSGif sur Yvette1970CD10C038-05.JPG
C:ALBUMSGif sur Yvette1971CD11C043-12.JPG
...
E:ALBUMSLa Motte Beuvron1984CD20C001-01.JPG
E:ALBUMSLa Motte Beuvron1984CD20C002-03.JPG
...
X:ALBUMSParis1994CD30C014-04.JPG
X:ALBUMSParis1994CD30C014-05.JPG
8<-----------8<---------8<----------8<----------8<----------8<----------8<

Il ne reste donc plus qu'à écrire un script qui lise chaque ligne du
fichier pour faire un copy vers C:Dossier_Temp qui sera utilisé pour
graver les photos.

En plus, votre éventuelle réponse (tout dépend de votre réaction quand
on vous traite de kroteux ;-) me permettrait d'apprendre un peu de
DOS-shell et donc d'administrer un peu les machines de mes pauvres
collègues du lycée.

En fait c'est un défi ;-)



désolé pour le défi en DOS Shell, c'est pas ma tasse de thé :)
Je préfère AutoIt3, un langage plus simple à mon gout...
http://www.autoitscript.com/autoit3/

Merci de votre aide



donc voici les quelques lignes qui devraient convenir, en admettant qu'il
n'y ait que de chemins valides, un par ligne, dans le fichier choisi. Et
qu'aucun fichier n'ait le même nom (sinon, seul le premier sera copié)

le script:

; Script patercopy.au3 à "compiler" en patercopy.exe
; usage : mycopy.exe fichier destination
; copie tous les fichiers listés dans "fichier" vers le dossier
; "destination"
; NB: les fichiers existants déja sur destination ne seront pas écrasés


If $CmdLine[0]=2 Then
$dest=$CmdLine[2]
$file = FileOpen($CmdLine[1], 0)
If $file = -1 Then
MsgBox(0, "Erreur", "Impossible d'ouvrir ce fichier.")
Exit
EndIf
While 1
$line = FileReadLine($file)
If @error = -1 Then ExitLoop
FileCopy ( $line, $dest , 0 )
Wend
FileClose($file)
Else
MsgBox (0,"Erreur", "Indiquer en argument le chemin du fichier suivi du
chemin de la destination")
Exit
EndIf

l'exe:
http://foxmail.free.fr/dl/patercopy.exe - 180ko

utilisation : patercopy.exe liste_my_album.txt C:Dossier_Temp

@+
--
rm - http://opera-fr.com - http://foxmail.free.fr
Avatar
Jean-Claude BELLAMY
Dans le message :,
Hugolino a pris la peine d'écrire ce qui suit :
[...]
Avec MyAlbum, j'ai réussi à exporter un fichier contenant le nom
complet des 1000 photos (avec le nom du répertoire), un sur chaque
ligne.

Ce que je voudrais maintenant, c'est avoir un script qui lirait chaque
ligne de ce fichier pour copier le fichier dans le dossier temporaire.

Le fichier se présente comme suit:
8<-----------8<---------8<----------8<----------8<----------8<----------8<
C:ALBUMSGif sur Yvette1970CD10C038-05.JPG
C:ALBUMSGif sur Yvette1971CD11C043-12.JPG
...
E:ALBUMSLa Motte Beuvron1984CD20C001-01.JPG
[...]

Il ne reste donc plus qu'à écrire un script qui lise chaque ligne du
fichier pour faire un copy vers C:Dossier_Temp qui sera utilisé pour
graver les photos.
[...]



Fastoche !!!
Cela tient en UNE SEULE LIGNE DE COMMANDE !
Seule condition requise : être sous Windows NT (NT4, W2K, XP, W2K3, Vista)

FOR /F %F in (nom-du-fichier-texte-contenant-la-liste) do copy "%F"
C:Dossier_Temp

NB: dans un batch il faut remplacer %F par %%F


--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP]
http://www.bellamyjc.org ou http://jc.bellamy.free.fr
Avatar
apocalypse.now
[ Bonjour ]°[ Bonsoir ], le Thu, 31 Aug 2006 22:24:29 +0200, Hugolino
a wroté:

.../...
Gros délire: pour me graver un CD avec les 1000 photos où l'on voit ma
bobine, il note, *pour chaque photo*, le nom indiqué par MyAlbum, ouvre
le dossier contenant la photo pour la copier/coller vers le dossier
temporaire qui servira à la gravure.



Quelque chose m'échappe.
Que ce soit avec CD-DvD mate ou Nero x.xx, le glisser-déposer du/des
fichiers originels dans la fenetre 'explorateur' de l'appli de gravure
n'est qu'une simple *copie* desdits fichiers. Càd que ces derniers
conservent leurs tailles et emplacements initiaux.

Le fichier se présente comme suit:
8<-----------8<---------8<----------8<----------8<----------8<----------8<
C:ALBUMSGif sur Yvette1970CD10C038-05.JPG
C:ALBUMSGif sur Yvette1971CD11C043-12.JPG
...
E:ALBUMSLa Motte Beuvron1984CD20C001-01.JPG
E:ALBUMSLa Motte Beuvron1984CD20C002-03.JPG



Je prendrais par ex. le dossier G/Yvette dans son entier, je le glisse
et je le dépose dans la fenêtre 'explorateur' de l'appli de gravure.
idem pour la Motte...
...jusqu'à atteindre la taille requise du support cd/dvd.

En plus, votre éventuelle réponse (tout dépend de votre réaction quand
on vous traite de kroteux ;-)



Nous autres les 'kroteux' nous ne sommes pas tout aussi *sectaires*
que les 'pines gouines'. ;)

DOS-shell et donc d'administrer un peu les machines de mes pauvres
collègues du lycée.



Xcopy,
http://www.interpc.fr/mapage/admortreuil/Informatiques/dos/Dosxcopy.htm
XXcopy (que je préfère car il offre plus de possibilités)
http://www.tekworkshop.com/welcome/modules.php?op=modload&name=News&file=article&sidW
http://www.freewarefiles.com/program_9_96_7483.html

--
VaN.
Avatar
nom complet
Dans news:,
Hugolino a écrit :
E:ALBUMSLa Motte Beuvron1984CD20C001-01.JPG
E:ALBUMSLa Motte Beuvron1984CD20C002-03.JPG



lamotte en un seul mot
Avatar
rm
Salut,

Le Fri, 1 Sep 2006 00:13:22 +0200, Jean-Claude BELLAMY a écrit :

Cela tient en UNE SEULE LIGNE DE COMMANDE !



joli !

Seule condition requise : être sous Windows NT (NT4, W2K, XP, W2K3, Vista)



...et que le "fichier-texte-contenant-la-liste" ne liste que des fichiers
aux noms courts ?
Ce n'est pas le cas du fichier proposé et les photos de "la motte beuvron"
et de "gif sur yvette" risquent de passer à la trappe, non ? :-)

@+
--
rm
Avatar
Sergio
rm a exprimé avec précision :

Le Fri, 1 Sep 2006 00:13:22 +0200, Jean-Claude BELLAMY a écrit :



Cela tient en UNE SEULE LIGNE DE COMMANDE !





joli !



Seule condition requise : être sous Windows NT (NT4, W2K, XP, W2K3, Vista)





...et que le "fichier-texte-contenant-la-liste" ne liste que des fichiers
aux noms courts ?



Le mode "ligne de commande" de NT connait très bien les noms longs.
Pour quelle raison ne les connaîtrait-il pas ?

Ce n'est pas le cas du fichier proposé et les photos de "la motte beuvron"
et de "gif sur yvette" risquent de passer à la trappe, non ? :-)



--
Serge http://leserged.online.fr/
Mon blog: http://cahierdesergio.free.fr/
Supportez le libre : http://www.framasoft.net/
Avatar
rm
Le Fri, 01 Sep 2006 10:34:58 +0200, Sergio a écrit :

Seule condition requise : être sous Windows NT (NT4, W2K, XP, W2K3, Vista)





...et que le "fichier-texte-contenant-la-liste" ne liste que des fichiers
aux noms courts ?



Le mode "ligne de commande" de NT connait très bien les noms longs.
Pour quelle raison ne les connaîtrait-il pas ?



Aucune idée... je ne maitrise pas assez les arcanes de la ligne de commande
mais _l'expérience_montre_ que le
do copy "%F" C:Dossier_Temp
ne "do" pas grand chose si le fichier récupéré en varible %F contient un
nom de fichier avec des espaces par exemple ;-P
même en ajoutant des guillemets dans le fichier texte d'ailleurs...
testé sous 2000 et XP

@+
--
rm
Avatar
Nina Popravka
On Thu, 31 Aug 2006 22:24:29 +0200, Hugolino wrote:

Gros délire: pour me graver un CD avec les 1000 photos où l'on voit ma
bobine, il note, *pour chaque photo*, le nom indiqué par MyAlbum, ouvre
le dossier contenant la photo pour la copier/coller vers le dossier
temporaire qui servira à la gravure.


Je vois dans la description des fonctionnalités de MyAlbum :
"Fonctionnalités spéciales pour construire un album sur CDROM."
Ca ferait pas l'affaire ?
--
Nina
Avatar
rm
Le Fri, 01 Sep 2006 11:04:16 +0200, Nina Popravka a écrit :

On Thu, 31 Aug 2006 22:24:29 +0200, Hugolino wrote:

Gros délire: pour me graver un CD avec les 1000 photos où l'on voit ma
bobine, il note, *pour chaque photo*, le nom indiqué par MyAlbum, ouvre
le dossier contenant la photo pour la copier/coller vers le dossier
temporaire qui servira à la gravure.


Je vois dans la description des fonctionnalités de MyAlbum :
"Fonctionnalités spéciales pour construire un album sur CDROM."
Ca ferait pas l'affaire ?



du souvenir que je peux avoir de ce MyAlbum... il ne faisait pas grand
chose tout seul ;-) même pas l'autorun.inf.
Je lui avais préféré à l'époque le visualiseur standalone (photoplayer,
maintenant inclu dans PowerSee, un gene d'ACDSee gratuit...) de
http://www.unidreamtech.com

@+
--
rm
Avatar
Hugolino
Le Fri, 1 Sep 2006 00:13:22 +0200, Jean-Claude BELLAMY a écrit:
Dans le message :,
Hugolino a pris la peine d'écrire ce qui suit :
> [...]
> Avec MyAlbum, j'ai réussi à exporter un fichier contenant le nom
> complet des 1000 photos (avec le nom du répertoire), un sur chaque
> ligne.
>
> Ce que je voudrais maintenant, c'est avoir un script qui lirait chaque
> ligne de ce fichier pour copier le fichier dans le dossier temporaire.
>
> Le fichier se présente comme suit:
> 8<-----------8<---------8<----------8<----------8<----------8<----------8<
> C:ALBUMSGif sur Yvette1970CD10C038-05.JPG
> C:ALBUMSGif sur Yvette1971CD11C043-12.JPG
> ...
> E:ALBUMSLa Motte Beuvron1984CD20C001-01.JPG
> [...]
>
> Il ne reste donc plus qu'à écrire un script qui lise chaque ligne du
> fichier pour faire un copy vers C:Dossier_Temp qui sera utilisé pour
> graver les photos.
> [...]

Fastoche !!!
Cela tient en UNE SEULE LIGNE DE COMMANDE !
Seule condition requise : être sous Windows NT (NT4, W2K, XP, W2K3, Vista)

FOR /F %F in (nom-du-fichier-texte-contenant-la-liste) do copy "%F"
C:Dossier_Temp



Tout d'abord merci à toi et aux autres

Petite remarque, si le chemin contient un espace alors copy râle:
8<-----------8<---------8<----------8<----------8<----------8<----------8<
copy "C:ALBUMSGif" C:Dossier_Temp
Le fichier spécifié est introuvable
8<-----------8<---------8<----------8<----------8<----------8<----------8<

Pas grave puisque je navet que quelques noms de répertoire à corriger,
mais c'est bizarre car j'imagine bien que si on mets "%F", c'est pour
éviter que l'espace ne coupe le nom du fichier en deux...


NB: dans un batch il faut remplacer %F par %%F



OK, merci encore.


--
Pas un problème du tout, j'arsouille QUAND je veux et AVEC QUI je veux
et COMME je veux,


... en résumé : tu joues que si t'es certain de gagner ;o)
Hugo (né il y a 1 336 524 923 secondes)
1 2 3