[BATCH] Supprimer les " d'un string [résolu]

Supprimer les " d'un string [résolu] [BATCH] - Shell/Batch - Programmation

Marsh Posté le 28-04-2007 à 22:37:58    

J'ai un petit problème :
 
Je fais ca pour extraire l'ID d'un processus :

Code :
  1. FOR /F "TOKENS=2 DELIMS=," %%R IN ('tasklist /fi "windowtitle eq test" /fo csv /nh') DO SET pid=%%R

Si je fais ECHO %pid% j'obtient "1234" avec les guillemets. Or je voudrais supprimer ces guillemets pour pouvoir utiliser cette valeur dans TASKKILL afin de fermer ce PID.
 
Comment faire? Il me semble avoir lu un truc là dessus (et ca avais l'air très simple), mais pas moyen de remettre la main dessus :s
 
Si je fais ECHO %pid:~1,4% ca m'enlève les guillemets mais ca ne peut pas marche si le processus est 123 ou 12345 (on sait jamais lol). Ya moyen de vérifier le nombre de caractère?
 
Sinon, vous n'auriez pas une methode pour savoir si un processus est lancé ou pas ? Ca serais cool :)


Message édité par armyman le 29-04-2007 à 10:02:15
Reply

Marsh Posté le 28-04-2007 à 22:37:58   

Reply

Marsh Posté le 29-04-2007 à 04:12:05    

for ... %%r in (...) do call :setPid %%r
goto next
 
:setPid
set pid=%~1
goto :eof
 
:next
 
Par contre, taskkill fonctionne avec les guillemets ;)

Reply

Marsh Posté le 29-04-2007 à 08:11:15    

"Par contre, taskkill fonctionne avec les guillemets"
 
Hmm, non ca marche pas pour moi :o
Par exemple ca ca marche :

Code :
  1. taskkill /FI "PID EQ 1234"

et ca ca marche pas :

Code :
  1. taskkill /FI "PID EQ "1234""

Ca me met pas d'erreur mais Information aucun processus blabla
 
Mais je crois que j'ai trouvé une solution, avec le nom de la fenêtre, et ca a l'air de fonctionner. En gros:

Code :
  1. SET Nom=NomDeLaFenetreAFermer
  2. SET Infos=TASKLIST /FI "WINDOWTITLE EQ %Nom%" /FO CSV /NH /V
  3. FOR /F "TOKENS=9 DELIMS=," %%R IN ('%Infos%') DO SET NomTrouvé=%%R
  4. SET NomTrouvé=%NomTrouvé:~1,21%
  5. IF "%NomTrouvé%" NEQ "%Nom%" (GOTO:ERREUR) ELSE GOTO:FERMER
  6. :ERREUR
  7.     ECHO %Nom% n est pas lancé.
  8.     PAUSE > NUL
  9. :FERMER
  10.     TASKKILL /FI "WINDOWTITLE EQ %Nom%" > NUL
  11.     ECHO %Nom% a été fermé
  12.     PAUSE > NUL


En tout cas j'ai essayé ton astuce, ca a l'air de marche merci je vais voir si je dois m'en servir ou non. ^^


Message édité par armyman le 29-04-2007 à 08:17:35
Reply

Marsh Posté le 29-04-2007 à 08:52:53    

Pourquoi  
taskkill /pid "1234"
ne te conviendrait-il pas ?

Reply

Marsh Posté le 29-04-2007 à 09:08:26    

Ceci supprime les guillemets:

Code :
  1. FOR /F "TOKENS=2 DELIMS=," %%R IN ('tasklist /fi "windowtitle eq test" /fo csv /nh') DO SET pid=%%R
  2. set pid=%pid:"=%

Reply

Marsh Posté le 29-04-2007 à 09:57:28    

Ok merci a vous deux :) j'ai l'embarras du choix maintenant lol
 
J'avais pas vu que /pid ca existait :pt1cable:

Reply

Marsh Posté le 11-06-2007 à 10:51:40    

ou ca ECHO %pid:~1,-1% ... je crois...

Reply

Sujets relatifs:

Leave a Replay

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