Un pro en batch dans le coin ?

Consultez la formation au REFERENCEMENT naturel Google de WebRankInfo / Ranking Metrics

max6
WRInaute discret
WRInaute discret
 
Messages: 168
Inscription: 18 Mai 2003

Un pro en batch dans le coin ?

Message le Ven Aoû 22, 2008 13:59

Salut

Voila j'aimerais faire un truc assez simple en batch mais n'y connaissant rien pour ainsi dire ca devient très compliqué.

J'ai une structure de dossiers comme cela :
/dossieregenerale/
/dossier-avec-nom-aleatoire/pics/0001.jpg,0002.jpg,...,0016.jpg
/dossier-avec-nom-aleatoire/pics/0001.jpg,0002.jpg,...,0016.jpg
/dossier-avec-nom-aleatoire/pics/0001.jpg,0002.jpg,...,0016.jpg

Ce que j'aimerais faire c'est prendre "0001.jpg,0002.jpg,...,0016.jpg" de chaque dossier et les placer dans un dossier numéroté 000001,000002,000003,etc..

Ces dossiers numérotés ne sont pas crées et seraient crées à la volée.
Donc résumons : on prend les 16 jpg de chaque dossier "pics" on les copie, on créer un dossier numéroté (a un autre endroit du disque evidemment) et on colle les 16 jpg dedans et ainsi de suite pour tous les dossiers ...


Possible ou non ?

Merc a tous

Fnnyaert
WRInaute discret
WRInaute discret
 
Messages: 62
Inscription: 25 Déc 2007

Message le Ven Aoû 22, 2008 14:22

En Java ca irait vite
en batch je sais pas ... pourquoi en batch ?

Fnnyaert
WRInaute discret
WRInaute discret
 
Messages: 62
Inscription: 25 Déc 2007

Message le Ven Aoû 22, 2008 14:23

En php c'est faisable aussi je pense si c'est pour du online

max6
WRInaute discret
WRInaute discret
 
Messages: 168
Inscription: 18 Mai 2003

Message le Ven Aoû 22, 2008 14:33

Le problème ce sont les quantités, c'est de l'ordre de plusieurs milliers de dossiers donc en ligne c ennuyeux et ca fait du poids

max6
WRInaute discret
WRInaute discret
 
Messages: 168
Inscription: 18 Mai 2003

Message le Ven Aoû 22, 2008 14:34

Batch me parait le plus simple mais après a part le php je ne connais rien et mes connaissances restent quand meme amateurs


e-kiwi
Modérateur
Modérateur
 
Messages: 15542
Inscription: 23 Déc 2003

Message le Ven Aoû 22, 2008 14:34

ce que tu dis, c'est que ce n'est pas sur un serveur Web. et installer un serveur local, pas intéressant non plus donc ?

max6
WRInaute discret
WRInaute discret
 
Messages: 168
Inscription: 18 Mai 2003

Message le Ven Aoû 22, 2008 14:39

Oui j'y ai pensé mais y'a une telle masse que ca risque de pas aller et faire planter le serveur virtuel


e-kiwi
Modérateur
Modérateur
 
Messages: 15542
Inscription: 23 Déc 2003

Message le Ven Aoû 22, 2008 14:47

Non, ton script peut tourner 3jours sans problème si tu veux :)

bozoleclown
WRInaute impliqué
WRInaute impliqué
 
Messages: 893
Inscription: 24 Nov 2005

Message le Ven Aoû 22, 2008 15:19

tu peux poster là-bas
http://linuxfr.org/forums/26/index.html

on devrait te donner une réponse assez rapidement

pierre_jean
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 339
Inscription: 6 Avr 2005

Re: Un pro en batch dans le coin ?

Message le Ven Aoû 22, 2008 15:29

max6 a écrit:Salut

Voila j'aimerais faire un truc assez simple en batch mais n'y connaissant rien pour ainsi dire ca devient très compliqué.



je sais pas si j'ai bien compris mais voilà une base :

avec la struture suivante :

Code: Tout sélectionner
/dossiergenerale/
/dossier-avec-nom-aleatoire/pics/0001.jpg
/dossier-avec-nom-aleatoire/pics/0002.jpg
/dossier-avec-nom-aleatoire/pics/0003.jpg
/dossier-avec-nom-aleatoire/pics/0004.jpg
/dossier-avec-nom-aleatoire/pics/0005.jpg


et le script :

Code: Tout sélectionner
#!/bin/sh

find dossier-avec-nom-aleatoire/* -name "*.jpg" | cut -f3 -d '/' | cut -f1 -d '.' | while read nomfichier ;
do
mkdir dossiergenerale/00$nomfichier/
cp dossier-avec-nom-aleatoire/pics/$nomfichier.jpg dossiergenerale/00$nomfichier/$nomfichier.jpg
done


résultat :

Code: Tout sélectionner
dossiergenerale/000001/0001.jpg
dossiergenerale/000002/0002.jpg
dossiergenerale/000003/0003.jpg
dossiergenerale/000004/0004.jpg
dossiergenerale/000005/0005.jpg


voila

max6
WRInaute discret
WRInaute discret
 
Messages: 168
Inscription: 18 Mai 2003

Message le Ven Aoû 22, 2008 15:37

Je comprend pas le find dossier-avec-nom-aleatoire/* -name , parcque si j'ai mis dossier-avec-nom-aleatoire c'est que c'est un dossier dont je ne connais pas le nom.
Si tu veux "dossier-avec-nom-aleatoire" peut avoir n'importe quel nom.

Par contre le résultat n'est pas celui la, en fait il faudrait les 16 jpg des des dossiers "pics" (il y a 16jpg dans chaque dossier pics) dans 1 seul dossier donc :
Code: Tout sélectionner
dossiergenerale/000001/0001.jpg,0002.jpg,0003.jpg,etc..
dossiergenerale/000002/0001.jpg,0002.jpg,0003.jpg,etc..
dossiergenerale/000003/0001.jpg,0002.jpg,0003.jpg,etc..
dossiergenerale/000004/0001.jpg,0002.jpg,0003.jpg,etc..
dossiergenerale/000005/0001.jpg,0002.jpg,0003.jpg,etc..

pierre_jean
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 339
Inscription: 6 Avr 2005

Message le Ven Aoû 22, 2008 16:24

max6 a écrit:Je comprend pas le find dossier-avec-nom-aleatoire/* -name , parcque si j'ai mis dossier-avec-nom-aleatoire c'est que c'est un dossier dont je ne connais pas le nom.
Si tu veux "dossier-avec-nom-aleatoire" peut avoir n'importe quel nom.


ok

donc avec la structure de fichiers suivante :

Code: Tout sélectionner
www/dossiergeneral/
www/dossieratraiter/aaa1/pics/0001.jpg
www/dossieratraiter/aaa1/pics/0002.jpg
www/dossieratraiter/aaa1/pics/0003.jpg
www/dossieratraiter/bbb2/pics/0001.jpg
www/dossieratraiter/bbb2/pics/0002.jpg
www/dossieratraiter/bbb2/pics/0003.jpg
www/dossieratraiter/ccc3/pics/0001.jpg
www/dossieratraiter/ccc3/pics/0002.jpg
www/dossieratraiter/ccc3/pics/0003.jpg


avec le script suivant dans le dossier www/ :

Code: Tout sélectionner
#!/bin/sh

find dossieratraiter/* -name "*.jpg" | cut -f2 -d '/' | uniq | while read nomdossier ;
do
cpt=`expr $cpt + 1`
# compter les dossiers pour faire un masque sur 6 chiffres
# test longueur de chaine 1 : donc nom dossier 000001
if [ ${#cpt} -eq 1 ];
   then
   cpt=00000$cpt
   # test longueur de chaine 2 : donc nom dossier 000010
   elif [ ${#cpt} -eq 2 ];
   then
   cpt=0000$cpt
   # test longueur de chaine 3 : donc nom dossier 000100
   elif [ ${#cpt} -eq 3 ];
   then
   cpt=000$cpt
   # test longueur de chaine 4 : donc nom dossier 001000
   elif [ ${#cpt} -eq 4 ];
   then
   cpt=00$cpt
   # test longueur de chaine 5 : donc nom dossier 010000
   elif [ ${#cpt} -eq 5 ];
   then
   cpt=0$cpt
   # test longueur de chaine 6 : donc nom dossier 100000
   elif [ ${#cpt} -eq 6 ];
   then
   cpt=$cpt
fi
nouveaudossier=$cpt
mkdir dossiergeneral/$nouveaudossier/

find dossieratraiter/$nomdossier/* -name "*.jpg" | cut -f4 -d '/' | cut -f1 -d '.' | while read nomfichier ;
do
cp dossieratraiter/$nomdossier/pics/$nomfichier.jpg dossiergeneral/$nouveaudossier/$nomfichier.jpg
done

done


résultat du script :

Code: Tout sélectionner
www/dossiergeneral/000001/0001.jpg
www/dossiergeneral/000001/0002.jpg
www/dossiergeneral/000001/0003.jpg
www/dossiergeneral/000002/0001.jpg
www/dossiergeneral/000002/0002.jpg
www/dossiergeneral/000002/0003.jpg
www/dossiergeneral/000003/0001.jpg
www/dossiergeneral/000003/0002.jpg
www/dossiergeneral/000003/0003.jpg


Dans le script il y a un masque sur 6 chiffres comme tu l'as indiqué dans ton exemple.

Voila

max6
WRInaute discret
WRInaute discret
 
Messages: 168
Inscription: 18 Mai 2003

Message le Ven Aoû 22, 2008 16:32

Question peut etre idiote mais c'est du batch ca ?

Tu me parles de www/ , faut donc lancer ce script sous wamp ?

Et fi c'es une commande ?

Code: Tout sélectionner
fi
nouveaudossier=$cpt
mkdir dossiergeneral/$nouveaudossier/


Merci pour ta patiente ce script peut me faire économiser des journées de taf, j'ai des centaines de milliers de dossiers à traiter c'est pour ca que c'est sur 6 chiffres

pierre_jean
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 339
Inscription: 6 Avr 2005

Message le Ven Aoû 22, 2008 16:35

max6 a écrit:Question peut etre idiote mais c'est du batch ca ?

Tu me parles de www/ , faut donc lancer ce script sous wamp ?

Et fi c'es une commande ?

Code: Tout sélectionner
fi
nouveaudossier=$cpt
mkdir dossiergeneral/$nouveaudossier/


Merci pour ta patiente ce script peut me faire économiser des journées de taf, j'ai des centaines de milliers de dossiers à traiter c'est pour ca que c'est sur 6 chiffres


www/ c'est un dossier quelconque ou tu met les script : dossier racine qui contient le dossieratraiter et le dossiergenerale

et fi c'est la fin d'un if :)

max6
WRInaute discret
WRInaute discret
 
Messages: 168
Inscription: 18 Mai 2003

Message le Ven Aoû 22, 2008 16:56

Bon alors voila ce que j'ai fais

J'ai un dossier "photos_all" dans lequel j'ai crée un mis ton script que j'ai appelé "script.bat". Ensuite j'ai crée deux dossiers, un qui s'appel "dossieratraiter" et un autre "dossiergeneral".

Dans "dossieratraiter" j'ai :

Code: Tout sélectionner
/dossieratraiter/test1/pics/0001.jpg,...,0016.jpg
                      /test2/pics/0001.jpg,...,0016.jpg
                      /test3/pics/0001.jpg,...,0016.jpg


Mais quand je lance le script ca marche pas ...

Un pro en batch dans le coin ?

Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Formation recommandée sur ce thème :

Formation REFERENCEMENT naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité