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

Transformer des noms de fichiers longs en court, impossible ? [DOS] - Shell/Batch - Programmation

Marsh Posté le 07-01-2006 à 16:03:42    

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:

Reply

Marsh Posté le 07-01-2006 à 16:03:42   

Reply

Marsh Posté le 07-01-2006 à 18:25:53    

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.

Reply

Marsh Posté le 08-01-2006 à 00:11:56    

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

Reply

Marsh Posté le 08-01-2006 à 00:14:05    

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 !

Reply

Marsh Posté le 08-01-2006 à 00:16:08    

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

Reply

Marsh Posté le 08-01-2006 à 08:37:11    

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
Reply

Marsh Posté le 08-01-2006 à 09:17:52    

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

Reply

Marsh Posté le 08-01-2006 à 13:19:04    

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
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed