See site in english Voir le site en francais
Website skin:
home  download  forum  link  contact

Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length

Author Topic: [ HS mais pas tant que ça ] enfin, je me comprend ...  (Read 31777 times)

0 Members and 2 Guests are viewing this topic.

Offline picto

  • Legend
  • ******
  • Posts: 5014
  • Country: France fr
  • Karma: 24
  • Criiii Crii Crii
Reply #25 - 09 February 2006, 21:00:53
Merci Buzz, pour ces explications complémentaires ... ;)
J'y retourne immédiatement ....


Tu as réussi à attiser ma curiosité ...
J'ai donc cherché sur internet des sites consacrés à la chose et j'ai trouvé ceci;
C'est un script qui permet de supprimer des caractères en début de nom de fichiers.
Il fonctionne, je l'ai essayé.
Puis j'ai essayé de panacher les instructions de départ avec ton premier script...

Sans résultat ....   :stupid:

Le voici ... peut il être utile pour corriger le premier script ?

Quote
Dim Fold
Dim Fil
Dim fso
Set Fso = CreateObject("Scripting.FileSystemObject" )
Set Fold = fso.GetFolder("C:\windows\bureau\testfold" )
For Each Fil In Fold.Files
Set Att = fso.GetFile(Fil.Path)
If Not (Att.Attributes) = 0 Then
Fil.Name = Mid(Fil.Name, 8, Len(Fil.Name) - 6)
Att.Attributes = 0
End if
Next
Set Fold = Nothing
Set fso = Nothing
Msgbox "Done"


Pic

Offline picto

  • Legend
  • ******
  • Posts: 5014
  • Country: France fr
  • Karma: 24
  • Criiii Crii Crii
Reply #26 - 09 February 2006, 21:28:14
Je ne comprend pas !
J'ai bien suivi tes instructions ...
Bien spécifié le chemin d'accès et les noms de fichiers et ça me dit encore " Fichier introuvable "  :wall:




Pic

Offline Buzz lightyear

  • Full Member
  • ***
  • Posts: 168
  • Karma: 0
Reply #27 - 09 February 2006, 22:57:16
héhéhé tu as oublié l'antislash de fin

non je rigole mais c'est pas drole


to infinity and beyond

Offline Buzz lightyear

  • Full Member
  • ***
  • Posts: 168
  • Karma: 0
Reply #28 - 09 February 2006, 23:03:11
Quote
Buzz lightyear a écrit:
héhéhé tu as oublié l'antislash de fin

non je rigole mais c'est pas drole


MonRepertoire = "C:\Documents and Settings\TestFolder\


to infinity and beyond

Offline Buzz lightyear

  • Full Member
  • ***
  • Posts: 168
  • Karma: 0
Reply #29 - 09 February 2006, 23:37:28
Le script que tu donnes en exemple permet de traiter en masse des fichiers en leur appliquant la même règle. Ton
problème est que tes fichiers doivent être renommés selon une séquence particulière. D'ou le fait qu'il faille mettre en
correspondance l'ancien et le nouveau nom.

Si la logique est toujours la même :

ancien fichier nouveau fichier
A1XX              AX
A2XX              BX
etc...
XXX1              X3
XXX2              X2

d'ou
A1X1 donne A3

X est le caractère neutre (je sent que je seme la confusion la)

Si la séquence est toujours de 3 fichiers par série alors oui il y a moyen d'automatiser avec une boucle :

Dim Fold
Dim Fil
Dim fso
Dim NouveauNom

Set Fso = CreateObject("Scripting.FileSystemObject")
Set Fold = fso.GetFolder("C:\windows\bureau\testfold")

For Each Fil In Fold.Files
NouveauNom = chr(mid(Fil.Name, 2, 1) + 64) & 4 - mid(Fil.name, 4, 1)  & ".jpg"
End if

Next

Set Fold = Nothing
Set fso = Nothing

ATTENTION CA N'A PAS ETE TESTE


to infinity and beyond

Offline picto

  • Legend
  • ******
  • Posts: 5014
  • Country: France fr
  • Karma: 24
  • Criiii Crii Crii
Reply #30 - 10 February 2006, 00:00:37
Merci Buzz !!!
Ca fonctionne ...:hot::top:

EEuuuhhhh ...
Bon ben allez, pourquoi ne pas abuser après tout .... :badsmile:

Mon idée est de charger les images par lots de 24,
classées dans un répertoire unique à chaque fois.

Elles seront du type

x01y01
à
x06y04

à chaque fois

sachant que

x01y01 occupe la position finale D1 ( sur la photo nommée Après )
et
x06y04 la position finale A6

Toujours le même emplacement de départ et toujours le même emplacement d'arrivée
par lots de 24 ....

Par contre les numéros de départ des fichiers ne seront jamais les mêmes...
mais toujours avec la même structure de classement par lots de 24


Avec les noms
a1 a2 a3 a4 a5 a6
b1 b2 b3 b4 b5 b6
c1 c2 c3 c4 c5 c6
d1 d2 d3 d4 d5 d6
Qui corespondent aux fichiers tels qu'ils se classent dans la fenêtre du dessus ...

Et c'est la qu'interviens la question " J'abuse "  :wor:
Y'aurait il moyen d'écrire un script du même genre que celui que j'ai trouvé sur Internet avec une action en boucle de
24 qui donne les noms A1 A2 .... etc ... dans l'ordre ..... sans tenir compte du nom du fichier de départ mais
uniquement de sa position par classement alphabetique dans le dossier ...
Et petite cerise sur le gateau, attribuer au passage un préfixe au nom du fichier qui serait celui du dossier dans lequel il se trouve .... du genre TA_1 ....

Comme les tableaux seront classés TA_1 ... TA_2 ...etc .... TB_1 ... TC_1 ....etc
J'obtiendrai ainsi des séries de "tableaux" cohérentes et surtout "visionnables" facilement sous windows
TA_1 qui contient TA_1_a1.dds à TA_1_d6.dds TA_2 qui contient TA_2_a1.dds à TA_2_  etc .... TA_3 qui ...
TB_1 qui ....
TC_1 ...
Etc ..







Message modifié ( 10-02-2006 19:41 )

Pic

Offline Buzz lightyear

  • Full Member
  • ***
  • Posts: 168
  • Karma: 0
Reply #31 - 10 February 2006, 20:05:49
C'est pas picto qu'il faut t'appeler mais docteur j'abuse (bou elle est mauvaise)
oui c'est possible
faut que je réflechisse un peu et sans doute j'aurais quelques précisions a te demander.
La de suite j'arrive du taf alors je vais une petite pause :drink:


to infinity and beyond

Offline picto

  • Legend
  • ******
  • Posts: 5014
  • Country: France fr
  • Karma: 24
  • Criiii Crii Crii
Reply #32 - 10 February 2006, 20:57:29
A la tienne !  :beer:


Pic

Offline Buzz lightyear

  • Full Member
  • ***
  • Posts: 168
  • Karma: 0
Reply #33 - 13 February 2006, 20:43:12
je ne t'avais pas oublié mais j'avais une flemme d'enfer

Dim Fold
    Dim Fil
    Dim fso
    Dim strName
   
    Dim i
    Dim j
   
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set Fold = fso.GetFolder("C:\RepertoireCible")
    i = 1
    For Each Fil In Fold.Files
        If j = 6 Then
            i = i + 1
            j = 1
        Else
            j = j + 1
        End If
        strName = Fold.Name & "_" & Chr(64 + i) & j & Mid(Fil.Name, InStrRev(Fil.Name, "."))
    Next
   
    Set Fold = Nothing
    Set fso = Nothing
   
    MsgBox "Done"

dis moi si ca marche et si ca ne marche pas donne moi la ligne ou il plante (testé sous VB mais pas sous script)
n'oublie pas de changer le répertoire cible sinon il va encore te dire qu'il ne trouve pas le répertoire


to infinity and beyond

Offline picto

  • Legend
  • ******
  • Posts: 5014
  • Country: France fr
  • Karma: 24
  • Criiii Crii Crii
Reply #34 - 14 February 2006, 00:03:01
Merci Buzz.
Je comprend la flemme ....

Mais j'ai une mauvaise nouvelle, la photo d'écran montre le résultat après l'éxécution du script.
Ca ne plante pas, mais rien ne se passe dans le dossier ...  :sad:
Je comprend bien la logique de la routine et de la petite phrase strname etc ...
strName veut il dire " changer le nom " en VB ?
Que veut dire testé sous VB dans ton message ?

Sinon, j'ai refait un test en remplaçant strname par fil.name ...
Tous les noms ont changé, mais le classement n'était pas celui attendu ...
Je cherche comment attribuer la variable strname à un ordre du genre Fil.name ...
sans foutre la m... dans l'éxécution de la boucle ...






Message modifié ( 14-02-2006 04:44 )

Pic

Offline Buzz lightyear

  • Full Member
  • ***
  • Posts: 168
  • Karma: 0
Reply #35 - 14 February 2006, 00:38:47
oups

remplace strName = ....

par Fil.Name = ....

en faisant les tests j'ai oublié de replacer les choses comme il faut (VB c'est visual basic)

[edit]
si l'ordre n'est pas le bon c'est que les fichiers ne sont pas correctement classés dans la FAT (le bazard qui indique la position des fichiers à windows).
Il faudrait que tu fasses un petit défrag ou alors que je te ponde un script qui classe les fichiers avant de les renommer (ok j'ai compris, je fais le script)
[/edit]



Message modifié ( 14-02-2006 00:42 )

to infinity and beyond

Offline Buzz lightyear

  • Full Member
  • ***
  • Posts: 168
  • Karma: 0
Reply #36 - 14 February 2006, 01:10:02
c'est pas gagné cette affaire parceque l'objet dont je voulais me servir ne fonctionne pas en script

defragmente pendant que je réfléchis :(


to infinity and beyond

Offline picto

  • Legend
  • ******
  • Posts: 5014
  • Country: France fr
  • Karma: 24
  • Criiii Crii Crii
Reply #37 - 14 February 2006, 01:19:30
J'avais déjà essayé avec le File.Name ...
Tu vois, au dessus, les fichiers bien rangés ...
Et dessous,
Un résultat un peu étonnant.  :)

Pourquoi est ce qu'il va inventer un E1 et oublier un C3 ?  :wall:




Pic

Offline picto

  • Legend
  • ******
  • Posts: 5014
  • Country: France fr
  • Karma: 24
  • Criiii Crii Crii
Reply #38 - 14 February 2006, 01:34:31
Et encore plus bizarre ....

J'avais fait une sauvegarde dans un coin du dossier en question ...
Donc,
après le premier tour ...
Copier coller des fichiers de la sauvegarde et le script plante avec un message ...
 "Ce fichier existe déjà "
Qu'à celà ne tienne ....
Supprimer dossier
Copier coller du dossier de sauvegarde ...

Un coup de script

ET ....




On m'aurait menti !!!!
Ce que Windows me montre à l'écran n'est pas ce qu'il a dans le ventre !!!  :rant:


Pic

Offline Buzz lightyear

  • Full Member
  • ***
  • Posts: 168
  • Karma: 0
Reply #39 - 14 February 2006, 21:22:24
La conclusion du second mail est la réponse à tous tes ennuis je pense.
A mon avis, tu ne dois pas montrer certains types de fichiers et donc voila : le fichier caché se nomme c3 et tout est
décalé au niveau des images (confirme steuple).

Il se peut aussi que comme tu es sortie en erreur, le script ne se soit pas nettoyer comme il faut. Du coup lorsque tu
le relance il perd un peu les pédales (théorie)

Essaye cette variante
si la ligne

Set Fold = fso.GetFolder("C:\RepertoireCible\*.jpg")

ne passe pas alors remet celle ci

Set Fold = fso.GetFolder("C:\RepertoireCible")

Dim Fold
Dim Fil
Dim fso
Dim strName

Dim i
Dim j

Set fso = CreateObject("Scripting.FileSystemObject")
Set Fold = fso.GetFolder("C:\RepertoireCible\*.jpg")
i = 1
j = 0
For Each Fil In Fold.Files
If j = 6 Then
i = i + 1
j = 1
Else
j = j + 1
End If
Fil.Name = Fold.Name & "_" & Chr(64 + i) & j & Mid(Fil.Name, InStrRev(Fil.Name, "."))
Next

Set Fil = Nothing
Set Fold = Nothing
Set fso = Nothing

MsgBox "Done"


to infinity and beyond

Offline picto

  • Legend
  • ******
  • Posts: 5014
  • Country: France fr
  • Karma: 24
  • Criiii Crii Crii
Reply #40 - 14 February 2006, 23:09:57
Quote
A mon avis, tu ne dois pas montrer certains types de fichiers et donc voila : le fichier caché se nomme c3 et
tout est décalé au niveau des images (confirme steuple).

Je ne suis pas sûr de comprendre la question, mais si oui;  non, il n'y a que
 les 24 fichiers jpg concernés par la manip dans le dossier.

Quote
Set Fold = fso.GetFolder("C:\RepertoireCible\*.jpg" )

Elle ne passe pas. J'ai donc remis la phrase précédente.


Sinon, j'ai recommencé la manip en changeant le répertoire de place,
fait la défragmentation, et je viens encore d'obtenir un classement de
TA1_E2 à TA1_I2 comme si le compteur ne s'arrêtait pas ....:sad:


Pic

Offline picto

  • Legend
  • ******
  • Posts: 5014
  • Country: France fr
  • Karma: 24
  • Criiii Crii Crii
Reply #41 - 15 February 2006, 01:12:02
J'ai regardé plus attentivement ce qui se passe lors du rename ...
Ce qui est dingue, c'est que windows semble " piocher " au hasard dans le répertoire ...
Sans tenir compte de l'ordre alphabétique des fichiers ...  :fool:

Puis il exécute ton script gentiment et attribue le nom décidé par ta routine avec au passage la création d'un "trou "
Ca doit l'amuser ...  :)

C'est un véritable casse tête ... :wall:
la fenêtre n'est plus très loin ...
pas celle de windows...
celle de la pièce...



Message modifié ( 15-02-2006 01:13 )

Pic

Offline Pagir

  • Legend
  • ******
  • Posts: 4522
  • Karma: 1
Reply #42 - 15 February 2006, 04:06:41
Affiches-tu tous tes fichiers, incluant les fichiers cachés "à l'habitude" par Windows? Je crois que c'est le sens du post
de Buzz. Donc dans la fenêtre d'affichage des fichiers:

Outils
Options des dossiers

onglet affichage.

À Fichiers et dossiers cachés:
Afficher les fichers et dossiers cachés.


Enfin... peut-être est-ce une évidence... :wonder:

Pagir


Pagir

Offline Buzz lightyear

  • Full Member
  • ***
  • Posts: 168
  • Karma: 0
Reply #43 - 15 February 2006, 20:19:40
Salut les gars

Oui Pagir c'était bien le sens de ma question.

Picto, Windows ne pioche pas dans les fichiers au hasard mais par rapport à un "fichier" spécial (je met des
guillemets parceque sinon un intégriste de l'informatique ferai une remarque) appelé FAT (File Allocation Table). Ce
fichier contient le nom et la position de tous tes fichiers sur ta bécane. la FAT est renseignée dans l'ordre ou les
fichiers sont créés et comme en général on ne créé pas les fichiers par ordre alphabétique mais plutot au fil de l'eau,
c'est vite le bordel.
Du coup lorsque le script regarde le contenu de ton répertoire, c'est la FAT qui lui répond (les intégristes de l'info font
encore des bonds de cabri). Lorsque tu regardes tes fichiers avec explorer, c'est lui qui fait le tri à l'affichage. Mais
physiquement ils ne sont pas forcemment ordonnés. C'est pour cela que je te disais de faire une défragmentation de
ton disque. Outre le fait qu'elle met de l'ordre dans tes fichiers (car en plus les coquins ne sont pas créés d'un bloc, ils
occupent les emplacements disponibles) elle met aussi de l'ordre dans ta FAT. Je pense que pour le moment c'est la
solution la plus simple pour que le script fonctionne car pour faire un tri avec du script ca va pas être de la tarte.


to infinity and beyond

Offline SimFan

  • Legend
  • ******
  • Posts: 2193
  • Karma: 0
Reply #44 - 15 February 2006, 22:01:09
Quote
appelé FAT


Pic, je crains bien que ce ne soit un coup fatal :(



Pour être positif, si tu mettais tes fichiers dans une partition FAT32 plutôt que NTFS (sous lequel tu es sans doute), dans une 2ème partition sur ton DD ou plus simplement un DD externe USB, tu pourrais ptêtre faire ton reclassement sous DOS.

J'ai tout ce qu'il faut pour accéder à un DDE USB, je m'en sers pour sauvegarder mes images DD de façon plus sûre et propre qu'avec le restau de Billy.


Pour ce faire, le plus simple est de faire une disquette de boot XP. Si tu n'as pas le lecteur idoine, voici une image de CD à graver avec l'option "bootable":

http://jeanpaj.free.fr/Divers/CDROM.IMA

Ensuite, si disquette :

- modifier config.sys en ajoutant :

DEVICE=USBASPI.SYS /V
DEVICE=DI1000DD.SYS

- ajouter aux fichiers d'origine

  USBASPI.SYS
  DI1000DD.SYS

 extraits de mhairu.zip

http://www.stefan2000.com/darkehorse/PC/DOS/Drivers/USB/mhairu.zip


Bécane hors tension, il faut connecter le DDE USB direct sur un port USB (1 ou 2), sans hub, le mettre sous tension, attendre qu'il ait fait tous ses salamalecs, puis démarrer ta bécane en bootant sur la disquette (ou le CD). Ton DDE apparaîtra sous D: ou E:  et tu n'auras plus qu'à DOSer allègrement.


PS : Avec cette version simplifiée de "boot", le clavier réagit à l'anglaise, comme dans Orbiter.

Si ça t'ankylose, tu peux partir d'une disquette de boot W98, on en trouve sur le ouaibe des prêtes à écrire ou bidouiller la XP avec la config de langue, ce que j'ai eu la flemme de faire...


Rappel, pour les Béotiens :

Ex :  pour Afficher A, frapper Q

A => Q
Q => A
Z => W
W => Z

Chiffres non "shiftés"

: => Shift + M
\ => *
. => :
* => Shift + 8
/ => !                    /P pour afficher page à page
_ => Shift + )
| => Shift + *



Message modifié ( 15-02-2006 22:46 )

SF  :)



Offline picto

  • Legend
  • ******
  • Posts: 5014
  • Country: France fr
  • Karma: 24
  • Criiii Crii Crii
Reply #45 - 15 February 2006, 23:56:56
Pagir, Buzz, Simfan,

Merci pour les renseignements...

Pagir, non ce n'était pas si évident que ça pour moi ... :badsmile:
Je vais regarder ça ...

Buzz, j'ai fait la défragmentation... ça n'a rien changé ....
Mais, en y réfléchissant, je me dis que le biais par lequel les fichiers se retrouvent
dans un dossier peut expliquer le bordel dans le FAT...
En deux mots, je crée un dossier, je télécharge un zip sur siglittoral...
Ensuite dézippage du zip dans le dossier...
Transformation des 24 fichiers en SID de départ en JPG avec Irfanview
avec un "delete file " d'origine après traitement ....
Puis mise à la poubelle du zip ...
D'ou ( peut être ) la présence virtuelle d'un vingt cinquième fichier dans le dossier ...
Genre cinquième colonne, si tu vois c'que j'veux dire ...  :)

Simfan, merci pour le petit cours et le cd ... je m'y attelle dès que possible ...
Mais, je ne sais pas pourquoi, je sens que le dosage va nécessiter quelques questions ....  ;)

Sinon, c'est Schimz qui avait raison ....
Et là, vive la saisie en masse ...  :sad:
Mais ça m'énerve, :rant:, c'est même une insulte à notre intelligence,
car un ordinateur me semblait justement fait pour éxécuter
ce genre de tâches répétitives ...



Message modifié ( 16-02-2006 00:04 )

Pic

Offline picto

  • Legend
  • ******
  • Posts: 5014
  • Country: France fr
  • Karma: 24
  • Criiii Crii Crii
Reply #46 - 16 February 2006, 00:50:54
L'option " afficher les fichiers cachés " était activée par défaut ...
Donc ...  :pfff:
Est ce que l'attribut " archive " d'un fichier est important ?



Message modifié ( 16-02-2006 01:02 )

Pic

Offline Buzz lightyear

  • Full Member
  • ***
  • Posts: 168
  • Karma: 0
Reply #47 - 16 February 2006, 19:31:49
Salut,

Normalement non l'attribut n'a pas d'importance (sauf la protection en lecture seule qui peut éventuellement bloquer
le renomage du fichier).

Ton fichier caché ça devait être un thumbs.db, non ?

C'est super etonnant que le defrag n'est pas remis d'ordre dans tout ca.
Sur ma bécane, j'ai les fichiers rangés comme des légionnaires sur les champs un 14 juillet.

Pour parer au probleme de fichier caché je t'ajoute une petite modif au script. Maintenant il ne traite plus que des JPG

Dim Fold
Dim Fil
Dim fso
Dim strName

Dim i
Dim j

Set fso = CreateObject("Scripting.FileSystemObject")
Set Fold = fso.GetFolder("C:\RepertoireCible")
i = 1
j = 0
For Each Fil In Fold.Files
if Mid(Fil.Name, InStrRev(Fil.Name, ".")) = ".jpg" then
If j = 6 Then
i = i + 1
j = 1
Else
j = j + 1
End If
Fil.Name = Fold.Name & "_" & Chr(64 + i) & j & Mid(Fil.Name, InStrRev(Fil.Name, "."))
end if
Next

Set Fil = Nothing
Set Fold = Nothing
Set fso = Nothing

MsgBox "Done"


to infinity and beyond

Offline Buzz lightyear

  • Full Member
  • ***
  • Posts: 168
  • Karma: 0
Reply #48 - 16 February 2006, 19:45:07
Si tu vas sous le dos et que tu fais un DIR dans ton répertoire, est ce que les fichiers se présentent en ordre
alphabétique ?

Si c'est le cas, j'ai une solution tranquille



Message modifié ( 16-02-2006 19:46 )

to infinity and beyond

Offline picto

  • Legend
  • ******
  • Posts: 5014
  • Country: France fr
  • Karma: 24
  • Criiii Crii Crii
Reply #49 - 16 February 2006, 20:14:56
Merci Buzz ...
Pour le temps que tu passes là dessus ...
C'est vraiment sympathique ...  :beer:

Il doit exister effectivement des fichiers cachés ...
Mais, je reste persuadé que Windows est " cinglé "

Voici la manoeuvre effectuée pour le vérifier ...

A partir d'un dossier de sauvegarde, je balance 24 photos dans le dossier TA1 vide ...
Puis j'exécute ton script ...
Tout se passe bien ...
La preuve ...





Mais là ou ça se complique à nouveau, et j'en suis désolé c'est à l'affichage en mode miniature ...
Les fichiers n'ont pas réellement le nom de leur emplacement ou inversement ...
Seconde preuve ....





"C'est pas grave " me dis je en moi même, "on recommence tout ... "
Vidage du dossier et retour à la case départ avec le dossier de sauvegarde ...
Rechti coup de script ...
Et là ....
Ce ne sont plus les mêmes fichiers qu'au premier tour qui ont pris le même nom ....
Troisième preuve ....






Tu remarqueras que TA1_A1 qui est censé être X0299Y2148
n'est pas le même après les deux séries de manips ...
Le fait que le nouveau script ne gère plus que les jpg et le fait que le compteur
soit clean à chaque fois semble démontrer la présence de fichiers autres en tout cas ...

La preuve par trois que Windows " pioche " au hasard  ...
ou est complètement ... :fool:
Et moi, je continue à me :wall:

Ceci dit, c'est intéressant et instructif ... :drink:
Il y a un effet secondaire intéressant, c'est que les fichiers
semblent avoir remonté d'un cran vers le haut entre les deux manips ...
Je ne sais pas si ça peut aider à comprendre le phénomène ...



Message modifié ( 16-02-2006 20:21 )

Pic