| Noms de fichiers courts aisément ! | |
|
|
Auteur | Message |
---|
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Noms de fichiers courts aisément ! Mer 9 Nov 2011 - 2:45 | |
| Ca y est - mon site évolue à nouveau !
Il y a un nouvel utilitaire dans la rubrique Panoramic, Page suivante: obtenir les noms courts de tous les fichiers, y compris leur chemin d'accès ! Et ça marche dans tous les cas ! Il y a un petit programme Panoramic qui utilise un utilitaire écrit par moi en Visual Basic 4 (fourni dans la distribution). Cet utilitaire peut aussi être appelé directement, soit en interactif, soit en mode batch. Dans tous les cas, on se trouve avec le nom court affiché à l'écran ET copié dans le presse-papier ! Il n'y a plus qu'à le coller dans le source du programme. Pour aller chercher L'éditeur Panoramic, ResHack et tous les autres outils...
Petit souci provisoire sur le site: après avoir cliqué sur Page suivante, il faut recharger (raffraichir) la page pour voir apparaître la troisième ligne dans le pavé de droite :
| |
|
| |
Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Noms de fichiers courts aisément ! Mer 9 Nov 2011 - 7:28 | |
| Hello Klaus ! Oooops ! Je n'avais pas vu l'ouverture de ce sujet... Voir ma réponse : ICI ! Juste une petite question, vu que tu as fais pas mal de recherche sur ce sujet : tu utilises ExtractShortPathName() de delphi (que j'utilise dans ma dll Utils) ou GetShortPathNameA de Kernel32 ? (a moins que ce soit la même chose?) PS : - J'ai pas rencontré de pb de rafraichissement sur ton site... - En faisant des recherches je suis tombé sur ceci... cela serait peut être intéressant de l'implémenter dans ton utilitaire, non ? | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Noms de fichiers courts aisément ! Mer 9 Nov 2011 - 10:13 | |
| C'est fait ev Visual Basic 4. Voici le code: - Code:
-
' Private Sub Form_Load()
Dim cmd As String Dim retval As Integer
cmd = Command() If Len(cmd) > 0 Then retval = Shell("cmd /c echo " + GetShortName(cmd) + ">C:\sfn_83.dat", 0) End End If
End Sub | |
|
| |
Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Noms de fichiers courts aisément ! Mer 9 Nov 2011 - 10:29 | |
| Merci Klaus (tu as vu j'ai fais attention, je n'ais pas mis jack ), content de voir que tu es de retour à 100% maintenant avec tes propositions de solutions aux problèmes techniques rencontrés ^^
Dernière édition par Jicehel le Mer 9 Nov 2011 - 12:43, édité 1 fois | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Noms de fichiers courts aisément ! Mer 9 Nov 2011 - 12:21 | |
| Voilà - la modif proposée par Nardo26 est faite: le fichier temporaire est déposé en C:\temp\SFN_83.dat et non plus en C:\SFN_83.dat. On peut télécharger la nouvelle version sur mon site.
Attention: ne pas oublier de réactualiser la page apès son chargement, sinon, on ne verra pas la ligne ! Petit inconvénient temporaire... | |
|
| |
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Noms de fichiers courts aisément ! Mer 9 Nov 2011 - 14:51 | |
| Bien ton utilitaire Klaus, mais mon avis personnel sera un peu plus nuancé: - il faut toujours faire appel à un programme externe (en l'occurence SFN.exe) qui doit suivre le module Panoramic, je cherche personnellement une solution intégrée au source, qui serait autonome. - pour SFN.exe, pourquoi passer par un fichier résultat, et ne pas mettre directement le résultat dans le clipboard, facilement accessible depuis Panoramic ? ça oblige à une E/S fichier, lequel fichier doit être connu et de SFN et du programme Panoramic, (en fait imposé par SFN), c'est donc un peu contraignant. | |
|
| |
Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Noms de fichiers courts aisément ! Mer 9 Nov 2011 - 16:09 | |
| JL35, tout simplement par ce qu'il y a plus d'idées dans 2 têtes que dans une, à mon avis ^^. Klaus a beau avoir plein d'idées géniales, il n'en n'a pas le monopole et c'est tant mieux, sinon à mon avis, il s'ennuirait.
Dernière édition par Jicehel le Mer 9 Nov 2011 - 22:08, édité 1 fois | |
|
| |
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Noms de fichiers courts aisément ! Mer 9 Nov 2011 - 20:44 | |
| Pour continuer dans la saga des noms courts, voici ma dernière production: un fichier de commande .vbs, intégré au programme Panoramic, et qui donne le résultat dans le clipboard, donc pas besoin de fichier de manoeuvre. Le seul fichier créé est le script lui-même (en plus d'un petit fichier interne qui lui est supprimé), à voir s'il faut le supprimer après usage. On peut d'ailleurs garder le script créé pour s'en servir en ligne de commande, résultat toujours dans le presse-papier. C'est un peu tordu, mais ça marche. Il n'y a pas de contrôle d'existence du path donné en paramètre, il faudrait faire ce contrôle avant l'appel au script, et en fait ce qui nous arrange c'est que les FILE_EXISTS et DIR_EXISTS fonctionnent avec des espaces dans les noms, donc on peut faire le test sur le nom long. Bien mettre le paramètre donné (nom long) entre quotes (ce n'est pas de la boucherie...). Voilà, avec son test (changer éventuellement p$): - Code:
-
DIM scr$, q$, script$: q$ = CHR$(34): scr$ = "Short2Clip.vbs" ' **************************************************************************** ' noms de variables scr$ et script$ à faire évoluer s'il y a plusieurs scripts ' **************************************************************************** DATA "Short2Clip.vbs" DATA "' ** Path court -> pp à partir du path long (en paramètre, entre quotes)" DATA "Dim oFSO,oFl,stLong" DATA "Set oFSO = CreateObject("+q$+"Scripting.FileSystemObject"+q$+")" DATA "stLong = wscript.Arguments(0) '* Paramètre: Path long" DATA "If oFSO.FileExists(stLong) Then" DATA " Set oFl = oFSO.GetFile(stLong)" DATA " With CreateObject("+q$+"Scripting.FileSystemObject"+q$+")" DATA " With .CreateTextFile("+q$+"Child.vbs"+q$+")" DATA " .WriteLine "+q$+"CreateObject("+q$+q$+"WScript.Shell"+q$+q$+").SendKeys "+q$+q$+"^c{ENTER}"+q$+q$+q$ DATA " .Close" DATA " End With" DATA " CreateObject("+q$+"WScript.Shell"+q$+").Run "+q$+"Child.vbs"+q$+"" DATA " Dummy = InputBox("+q$+""+q$+","+q$+""+q$+" , oFl.ShortPath)" DATA " .DeleteFile "+q$+"Child.vbs"+q$+"" DATA " End With" DATA "End If" DATA "f" READ script$ WHILE script$ <> scr$: READ script$: END_WHILE: ' rephasage sur les datas FILE_OPEN_WRITE 9, "C:\Temp\" + scr$ READ script$ WHILE script$ <> "f" FILE_WRITELN 9, script$ READ script$ END_WHILE FILE_CLOSE 9 script$ = "C:\Temp\" + scr$: ' script à exécuter
DIM p$, c$ p$ = "C:\Program Files (x86)\Panoramic Editor\Panoramic_Editor.exe": print p$ EXECUTE_WAIT "Wscript.exe " + script$ + " " + q$+p$+q$ p$ = CLIPBOARD_STRING_PASTE$: print p$ End
Qu'en penses-tu Klaus ? c'est bien plus lourd que ton système, mais c'est intégré. Y a-t'il quelque chose de simple en VB pour envoyer le résultat dans le clipboard ? ce n'est pas prévu en vbs, ici c'est un artifice. | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Noms de fichiers courts aisément ! Mer 9 Nov 2011 - 21:49 | |
| Suis-je bête ! Evidemment il faut passer par le clipboard ! Le plus fort, c'est que je le fais: SFN.EXE le place d'office dans le cliboard en mode interactif ce que j'ai documenté, mais ne le fait pas en mode batch, et je me demande bien où j'avais la tête pour pondre une pareille aberration ! Ce sera corrigé rapidement, et il n'y aura plus de fichier temporaire. En ce qui concerne ton script, je l'ai essayé, et voici ce que je récolte: Si tu as une idée pour le faire marcher... Est-ce que tu "calcules" le nom court ou est-ce que tu le demandes au système ? Voici un cas concret sur mon système (répertoire de publication de mon site web): nom long: C:\Sites\Panoramic\EN_hlp_DLL_divers.60.html nom court: C:\Sites\PANORA~1\EN0AE0~1.HTM tu vois que ce n'est pas toujours les 6 premiers caractères suivis d'une tilde suivie d'un chiffre... | |
|
| |
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Noms de fichiers courts aisément ! Mer 9 Nov 2011 - 22:27 | |
| Ah non ce n'est pas moi qui calcule le nom court, ce serait trop simple (si ça marchait !), il est renvoyé par une fonction de vbscript. Je vais essayer ton exemple, pour voir. Quant à ton erreur, aucune idée à priori, je ne suis pas spécialiste et je fais tout ça de façon plutôt empirique, par analogie avec des exemples trouvés ici ou là... je regarde en tout cas. Pour ton exemple, pour (j'ai créé le fichier) C:\Langages\Panoramic\EN_hlp_DLL_divers.60.html il me rend C:\Langages\PANORA~1\EN_HLP~1.HTM et je peux utiliser ce nom-là, ça marche (le DIR /X renvoie d'ailleurs le même nom). En effet, ça ne rend pas la même chose d'un PC à l'autre, le nom court rendu dépend de l'environnement. Pour l'erreur, il semblerait que ce soit un bug connu sous Windows XP: http://support.microsoft.com/kb/311269/frdésolé ... Et ce sera tout pour ce soir, bonne nuit ! | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Noms de fichiers courts aisément ! Mer 9 Nov 2011 - 23:34 | |
| @JL35: merci pour le lien vers MS. J'ai essayé leur correction, mais pour l'instant, sans résultat. Je continue à chercher. Mon site est intégralement réparé - plus besoin de raffraichir la page. Et le programme est modifié: il n'y a plus de fichier temporaire. Tout passe par le presse-papier. EDIT 10/11/2011 à 00:07 J'ai trouvé d'où vient l'erreur avec ton script: il fallait faire la commande - Code:
-
regsvr32 c:\windows\system32\scrrun.dll et ton script marche. Et il produit le même résultat que mon programme. Donc, c'est au choix: on trimballe un petit exécutable externe qui marche dans tous les cas, ou on s'assure que la DLL d'exécution des scripts vbs est bien enregistrée - c'est selon. En tout cas, je garde ton programme, ne serait-ce que pour le côté didactique et pour avoir une plus large palette de solution. Bravo, JL35 ! | |
|
| |
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Noms de fichiers courts aisément ! Jeu 10 Nov 2011 - 10:27 | |
| C'est toi le plus fort Klaus (c'est sympa de se congratuler !), tu as trouvé la solution pour les scripts, ce n'était pas très clair chez microsoft. Et avec ça on peut espérer que ça marchera pour tous les autres scripts vbs. | |
|
| |
Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Noms de fichiers courts aisément ! Jeu 10 Nov 2011 - 10:49 | |
| De toute façon le quatuor infernal Cosmos70 - JL35 - Klaus - Nardo26 est redoutable et plein de ressources ^^ | |
|
| |
Contenu sponsorisé
| Sujet: Re: Noms de fichiers courts aisément ! | |
| |
|
| |
| Noms de fichiers courts aisément ! | |
|