Remplacement de caractère dans une chaîne

Remplacement de caractère dans une chaîne - Shell/Batch - Programmation

Marsh Posté le 10-12-2010 à 12:21:58    

Bonjour,  
 
J'ai écrit le code ci-dessous pour extraire la taille disque restante :
 

Code :
  1. for /f "tokens=3 " %%I IN ('dir C: ^| find /I "octets libres"') DO set str=%%I
  2. set str=%res: =%
  3. echo %str%


 
Dans ce cas de figure où la variable "str" est initialisée par la commande for, la commande set str=%res: =% ne fonctionne pas (celà devrait supprimer tous les espaces)
 
En revanche si je défini manuellement la variable str (ex: set str=32 125 456 789) alors là ça fonctionne, le résultat sera bien 32123456789
 
Est-ce qu'il y'a une autre façon d'initialiser la variable str au niveau de la commande for ?
Est-ce qu'il y'a une autre méthode pour obtenir la taille disque restante
 
PS : Car sous la forme 32 564 741 789, je ne peux pas l'exploiter (Si supérieur, su inférieur, etc ...)
 
D'avance merci

Reply

Marsh Posté le 10-12-2010 à 12:21:58   

Reply

Marsh Posté le 13-12-2010 à 18:44:46    

la commande set str=%res: =% ne peut pas fonctionner puisque la valeur %res% n'existe nul part dans ton script.
 
tu est censé mettre quelque chose du genre  set .... = %str= ... %
 
Essaye aussi avec SETLOCAL ENABLEEXTENSIONS au début de ton script.


---------------
Quand on aime on ne compte pas. Quel Dilemme lorsque l'on aime compter !
Reply

Marsh Posté le 15-12-2010 à 18:40:40    

Xspawn_Lpc a écrit :

la commande set str=%res: =% ne peut pas fonctionner puisque la valeur %res% n'existe nul part dans ton script.
 
tu est censé mettre quelque chose du genre  set .... = %str= ... %
 
Essaye aussi avec SETLOCAL ENABLEEXTENSIONS au début de ton script.


 
 
le %res% est juste une erreur de copier coller sur le forum.
J'essayerais avec SETLOCAL ENABLEEXTENSIONS
 
Parcontre si je met set str=%str:2=% là ça me supprime bien les "2", on dirait que ça ne reconnait pas les "espaces"

Reply

Marsh Posté le 15-12-2010 à 22:43:54    

euh je me suis trompé, c'est SETLOCAL ENABLEDELAYEDEXPANSION
 
c'est oui possible qu'il ait besoin d'un caractère classique.
Sinon via une boucle for y'a peut être moyen
 
for %i in (%str%) do @echo %i
 
mais bon dos pour faire ca  :(  
 
alors qu'en vbs tu récupère la taille d'un fichier/dossier directement sous forme de nombre :p


---------------
Quand on aime on ne compte pas. Quel Dilemme lorsque l'on aime compter !
Reply

Marsh Posté le 16-12-2010 à 10:19:37    

:( Ben non tout cela ne fonctionne pas ...
 
Apparemment c'est la variable %%I qui doit interpréter bizarrement les "espaces"
 
Car en déclarant la variable %str% manuellement ça fonctionne bien ensuite  :pfff:

Reply

Marsh Posté le 16-12-2010 à 10:54:13    

:bounce:  :bounce:  :bounce: J'ai trouvé !!!
 
En fait les espaces qui sont dans la variable %%I ne sont pas vraiment des espaces.
 
Ce sont des équivalent du caractère ASCII ÿ que l'on peut afficher avec la commande alt + 0255
 
Donc :
 

Code :
  1. set str=%str:ÿ=%


 
Ce code supprime donc bien les espaces dans la chaîne de caractère  :)

Reply

Marsh Posté le 16-12-2010 à 20:21:11    

bien joué ;)


---------------
Quand on aime on ne compte pas. Quel Dilemme lorsque l'on aime compter !
Reply

Sujets relatifs:

Leave a Replay

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