Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1743 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  [DOS] Transformer des noms de fichiers longs en court, impossible ?

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[DOS] Transformer des noms de fichiers longs en court, impossible ?

n°1278750
Stock777
Posté le 07-01-2006 à 16:03:42  profilanswer
 

Bonjour à vous tous !  
Je cherche à récupérer des noms courts et pas des noms longs sous DOS d'XP pour un programme qui ne les gère pas :  
 
Evidemment, quand je fais :  
for %%a in (*.rtf) do conversion.exe %%a
 
Conversion.exe marche avec des noms courts mais bloque d'un coup sur les noms longs. Donc, je voudrai bien des %%a qui soient ...des noms courts.  
SI je n'y arrive pas je renommerai mes fichiers rtf, mais comme il y en a beaucoup....
Je pense aussi que me lancer une disque sous DOS 5 marcherait aussi d'ailleurs, sans doute ?  
Merci de votre aide !!
 :hello:

mood
Publicité
Posté le 07-01-2006 à 16:03:42  profilanswer
 

n°1278800
olivthill
Posté le 07-01-2006 à 18:25:53  profilanswer
 

Sous DOS, avec les commandes usuels du batch, je ne sais pas comment faire cela.
Mais il est possible de le faire avec du VBS (le VBS existe en standard sous Windows, et n'est pas très difficile à apprendre), avec le programme suivant :

Code :
  1. Set fso = CreateObject("Scripting.FileSystemObject" )
  2. Set f = fso.GetFolder("C:\mon_dossier" )
  3. Set fc = f.Files
  4. For Each f1 in fc
  5.     nom_fic_court = f1.ShortName
  6.     Set objShell = WScript.CreateObject("WScript.Shell" )
  7.     Set objExecObject = objShell.Exec("cmd /c conversion.exe " & nom_fic_court)
  8. Next


Ces lignes sont à mettre, par exemple dans un fichier appelé "cvt_short.vbs". Puis sous DOS, ces lignes sont exécutées par

Code :
  1. cscript.exe cvt_short.vbs

Ou bien, sous Windows, dans l'explorer, il suffide double-cliquer sur cvt_short.vbs.

n°1278907
wackevat
Posté le 08-01-2006 à 00:11:56  profilanswer
 

Stock777 a écrit :

Je cherche à récupérer des noms courts et pas des noms longs sous DOS d'XP pour un programme qui ne les gère pas


:hello:

Code :
  1. setlocal enableExtensions
  2. for /f "usebackq" %%a in (`dir /x /b *.htm*`) do (echo %%a)
  3. endlocal

n°1278908
Stock777
Posté le 08-01-2006 à 00:14:05  profilanswer
 

Merci beaucoup olivthill ! Je te remercie bien pour cette idée, je n'ai jamais testé le vbs de cette manière, mais je vais tenter et te donner des nouvelles !

n°1278910
Stock777
Posté le 08-01-2006 à 00:16:08  profilanswer
 

oup ! nglechau je n'avais pas vu ta réponse ! Je vais aussi tester ! Merci à toi !

n°1278953
Stock777
Posté le 08-01-2006 à 08:37:11  profilanswer
 

Alors : pour nglechau, malheureusement le problème reste le même....
Pour olivthill, cela fonctionne parfaitement ! J'obtiens un fichier au nom court mais peu importe. Je pensais améliorer le programme en lançant une conversion récursive qui entre dans les sous-répertoires, en même temps, de toute façon le convertisseur créé le fichier dans le répertoire dans lequel il se trouve et pas moyen de rediriger la sortir semble-t-il....
(pour info. ce doit bien être le seul convertisseur RTF > HTML qui fait du bon travail sur la multitude que j'ai testé, et qui ne fait pas sauter les notes de bas de page, tout en conservant la mise en forme : Martha 2.4)
 
-------------
Edit : Erreur ! l'indication d'un fichier de sortie est prise en compte ! Ca c'est une bonne nouvelle....bon, je vais essayer de m'inspirer de ce post : http://forum.hardware.fr/hardwaref [...] 2768-1.htm
mais...si vous avez une idée plus rapide pour ajouter juste au script d'olivthill une boucle de parcours récursif des sous-dossiers....un grand grand merci encore une fois !

Message cité 1 fois
Message édité par Stock777 le 08-01-2006 à 08:48:46
n°1278962
wackevat
Posté le 08-01-2006 à 09:17:52  profilanswer
 

Stock777 a écrit :

Alors : pour nglechau, malheureusement le problème reste le même....


OK, sorry, je me suis trompée, l'heure toussa ;)
 
Essaie :

Code :
  1. for /r dossier_racine %%a in (*.rtf) do conversion.exe %%~sa

n°1279057
Stock777
Posté le 08-01-2006 à 13:19:04  profilanswer
 

La folie !!!! :wahoo:  :wahoo:  nglechau, la commande permet de faire la récursivité ET de traiter les noms longs ! C'est im-pe-cable !  
Je ne sais pas comment te remercier...  ;)  ;)


Message édité par Stock777 le 08-01-2006 à 13:20:10

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  [DOS] Transformer des noms de fichiers longs en court, impossible ?

 

Sujets relatifs
Partage de fichiers sécurisé (SSH ou SSL)[Résolu][Batch] Renommer des fichiers
Transformer une vidéo .avi en une vidéo .ra[ RESOLU ] Effacer des fichiers PDF qui ont plus d'une heure
copie de contenu de n fichiers dans un seul fichier[PHP QST] envoie de plusieurs fichiers en un seul tour de main
[réglé] [MsDos] Copier des fichiers Tempory Internet FilesFichiers images png/gif sous VB6?
[DOS] Chargement drivers IDE et SCSI pour lecteursbatch de transfert ftp de repertoires et fichiers
Plus de sujets relatifs à : [DOS] Transformer des noms de fichiers longs en court, impossible ?


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR