Il arrive de temps à autre que j'aie à lancer des batchs qui ne servent qu'une fois (des installations, souvent).
Pour ne pas laisser trainer des bat partout sur le disque dur, j'utilise cette astuce :
Au début du bat : set bat=%0%
Et en dernière ligne : start /B %comspec% /c "ping 127.0.0.1 -n 5 && del /f %bat%"
Je serais curieux de savoir si vous avez une autre méthode ? (en bat de préférence, autres languages acceptés... ;-) )
Un simple del %0 en fin de batch semble faire l'affaire. Dans mes tests, le del retourne un message d'erreur mais le fichier est bien supprimé.
Par contre, la variable %0 ne contient que le nom du batch tel qu'il a été appelé. Il faut donc veiller à ce que les appels au batch contiennent son nom complet (avec l'extension) et éventuellement son chemin d'accès s'il y a un risque que le batch change de répertoire de travail en cours de route.
Jacques
"~Jean-Marc~ [MVP]" <doc.j-m.OTER@ouanadoudou.fr> wrote in message
news:%23ohYuFf2HHA.5696@TK2MSFTNGP02.phx.gbl...
Bonjour à tous,
petit quizzzzzzz..... :-)
Il arrive de temps à autre que j'aie à lancer des batchs qui
ne servent qu'une fois (des installations, souvent).
Pour ne pas laisser trainer des bat partout sur le disque dur,
j'utilise cette astuce :
Au début du bat :
set bat=%0%
Et en dernière ligne :
start /B %comspec% /c "ping 127.0.0.1 -n 5 && del /f %bat%"
Je serais curieux de savoir si vous avez une autre méthode ?
(en bat de préférence, autres languages acceptés... ;-) )
Un simple del %0 en fin de batch semble faire l'affaire. Dans mes tests, le
del retourne un message d'erreur mais le fichier est bien supprimé.
Par contre, la variable %0 ne contient que le nom du batch tel qu'il a été
appelé. Il faut donc veiller à ce que les appels au batch contiennent son
nom complet (avec l'extension) et éventuellement son chemin d'accès s'il y a
un risque que le batch change de répertoire de travail en cours de route.
Il arrive de temps à autre que j'aie à lancer des batchs qui ne servent qu'une fois (des installations, souvent).
Pour ne pas laisser trainer des bat partout sur le disque dur, j'utilise cette astuce :
Au début du bat : set bat=%0%
Et en dernière ligne : start /B %comspec% /c "ping 127.0.0.1 -n 5 && del /f %bat%"
Je serais curieux de savoir si vous avez une autre méthode ? (en bat de préférence, autres languages acceptés... ;-) )
Un simple del %0 en fin de batch semble faire l'affaire. Dans mes tests, le del retourne un message d'erreur mais le fichier est bien supprimé.
Par contre, la variable %0 ne contient que le nom du batch tel qu'il a été appelé. Il faut donc veiller à ce que les appels au batch contiennent son nom complet (avec l'extension) et éventuellement son chemin d'accès s'il y a un risque que le batch change de répertoire de travail en cours de route.
Jacques
~Jean-Marc~ [MVP]
Salut Jacques Barathon [MS], tu nous disais :
Un simple del %0 en fin de batch semble faire l'affaire. Dans mes tests, le del retourne un message d'erreur mais le fichier est bien supprimé.
J'ai eu des soucis avec cette méthode...
Par contre, la variable %0 ne contient que le nom du batch tel qu'il a été appelé. Il faut donc veiller à ce que les appels au batch contiennent son nom complet (avec l'extension) et éventuellement son chemin d'accès s'il y a un risque que le batch change de répertoire de travail en cours de route.
Très bonne remarque. C'est d'ailleurs pour cela que j'affecte %bat% au début. Il faudrait que je vérifie les altérations de %0% suivant les actions du batch.
Un simple del %0 en fin de batch semble faire l'affaire. Dans mes
tests, le del retourne un message d'erreur mais le fichier est bien
supprimé.
J'ai eu des soucis avec cette méthode...
Par contre, la variable %0 ne contient que le nom du batch tel qu'il
a été appelé. Il faut donc veiller à ce que les appels au batch
contiennent son nom complet (avec l'extension) et éventuellement son
chemin d'accès s'il y a un risque que le batch change de répertoire
de travail en cours de route.
Très bonne remarque. C'est d'ailleurs pour cela que j'affecte %bat%
au début. Il faudrait que je vérifie les altérations de %0% suivant les
actions du batch.
@+
--
~Jean-Marc~ MVP Shell/User Fr
( Vista x86 Ultimate )
- http://msmvps.com/blogs/docxp/ -
- http://docxp.mvps.org -
Un simple del %0 en fin de batch semble faire l'affaire. Dans mes tests, le del retourne un message d'erreur mais le fichier est bien supprimé.
J'ai eu des soucis avec cette méthode...
Par contre, la variable %0 ne contient que le nom du batch tel qu'il a été appelé. Il faut donc veiller à ce que les appels au batch contiennent son nom complet (avec l'extension) et éventuellement son chemin d'accès s'il y a un risque que le batch change de répertoire de travail en cours de route.
Très bonne remarque. C'est d'ailleurs pour cela que j'affecte %bat% au début. Il faudrait que je vérifie les altérations de %0% suivant les actions du batch.
Il arrive de temps à autre que j'aie à lancer des batchs qui ne servent qu'une fois (des installations, souvent).
Pour ne pas laisser trainer des bat partout sur le disque dur, j'utilise cette astuce :
Au début du bat : set bat=%0%
Et en dernière ligne : start /B %comspec% /c "ping 127.0.0.1 -n 5 && del /f %bat%"
Je serais curieux de savoir si vous avez une autre méthode ? (en bat de préférence, autres languages acceptés... ;-) )
Un simple del %0 en fin de batch semble faire l'affaire. Dans mes tests, le del retourne un message d'erreur mais le fichier est bien supprimé. Par contre, la variable %0 ne contient que le nom du batch tel qu'il a été appelé. Il faut donc veiller à ce que les appels au batch contiennent son nom complet (avec l'extension) et éventuellement son chemin d'accès s'il y a un risque que le batch change de répertoire de travail en cours de route. Jacques
Vraiment pas un expert en bat, mais ceci à l'air de faire l'affaire: set bat="%~dp0%0%"
Jacques Barathon [MS] wrote:
"~Jean-Marc~ [MVP]" <doc.j-m.OTER@ouanadoudou.fr> wrote in message
news:%23ohYuFf2HHA.5696@TK2MSFTNGP02.phx.gbl...
Bonjour à tous,
petit quizzzzzzz..... :-)
Il arrive de temps à autre que j'aie à lancer des batchs qui
ne servent qu'une fois (des installations, souvent).
Pour ne pas laisser trainer des bat partout sur le disque dur,
j'utilise cette astuce :
Au début du bat :
set bat=%0%
Et en dernière ligne :
start /B %comspec% /c "ping 127.0.0.1 -n 5 && del /f %bat%"
Je serais curieux de savoir si vous avez une autre méthode ?
(en bat de préférence, autres languages acceptés... ;-) )
Un simple del %0 en fin de batch semble faire l'affaire. Dans mes
tests, le del retourne un message d'erreur mais le fichier est bien
supprimé.
Par contre, la variable %0 ne contient que le nom du batch tel qu'il
a été appelé. Il faut donc veiller à ce que les appels au batch
contiennent son nom complet (avec l'extension) et éventuellement son
chemin d'accès s'il y a un risque que le batch change de répertoire
de travail en cours de route.
Jacques
Vraiment pas un expert en bat, mais ceci à l'air de faire l'affaire:
set bat="%~dp0%0%"
Il arrive de temps à autre que j'aie à lancer des batchs qui ne servent qu'une fois (des installations, souvent).
Pour ne pas laisser trainer des bat partout sur le disque dur, j'utilise cette astuce :
Au début du bat : set bat=%0%
Et en dernière ligne : start /B %comspec% /c "ping 127.0.0.1 -n 5 && del /f %bat%"
Je serais curieux de savoir si vous avez une autre méthode ? (en bat de préférence, autres languages acceptés... ;-) )
Un simple del %0 en fin de batch semble faire l'affaire. Dans mes tests, le del retourne un message d'erreur mais le fichier est bien supprimé. Par contre, la variable %0 ne contient que le nom du batch tel qu'il a été appelé. Il faut donc veiller à ce que les appels au batch contiennent son nom complet (avec l'extension) et éventuellement son chemin d'accès s'il y a un risque que le batch change de répertoire de travail en cours de route. Jacques
Vraiment pas un expert en bat, mais ceci à l'air de faire l'affaire: set bat="%~dp0%0%"
Jacques Barathon [MS]
"jbongran" wrote in message news: ...
Vraiment pas un expert en bat, mais ceci à l'air de faire l'affaire: set bat="%~dp0%0%"
Presque :) L'ajout de ~dp0 permet d'avoir le chemin complet, mais ça ne donne pas l'extension. Embêtant si le batch a été appelé par son petit nom sans que soit précisée son extension...
Jacques
"jbongran" <jbongran@free.fr> wrote in message
news:e4qDY3z2HHA.5360@TK2MSFTNGP03.phx.gbl...
...
Vraiment pas un expert en bat, mais ceci à l'air de faire l'affaire:
set bat="%~dp0%0%"
Presque :)
L'ajout de ~dp0 permet d'avoir le chemin complet, mais ça ne donne pas
l'extension. Embêtant si le batch a été appelé par son petit nom sans que
soit précisée son extension...
Vraiment pas un expert en bat, mais ceci à l'air de faire l'affaire: set bat="%~dp0%0%"
Presque :) L'ajout de ~dp0 permet d'avoir le chemin complet, mais ça ne donne pas l'extension. Embêtant si le batch a été appelé par son petit nom sans que soit précisée son extension...
Jacques
Méta-MCI \(MVP\)
Bonjour !
(HS : Jacques, tu n'es pas (encore) dans la navette ? )
Bref, l'idée de jbongrain est très bonne. Pour avoir l'extension, il suffit d'ajouter "x" (et "n" pour le nom du fichier) : set bat=%~dpnx0% (guillemets à ajouter, selon la saison).
Pour les changements de répertoire, le problème est effectivement contourné, si l'on met la ligne en début du batch.
Pour le message d'erreur avec un simple del cela provient du processeur de traitement des batchs, qui recharge (intégralement) le fichier batch à la fin de chaque ligne (ce qui permet de faire des batchs qui se modifient eux-même en cours de traitement). Du coup le processeur ne trouve pas le fichier, après l'exécution du del, d'où le message d'erreur.
L'idée (de ~Jean-Marc~) du START, qui ouvre un nouvel environnement est donc astucieuse.
@-salutations
Michel Claveau
Bonjour !
(HS : Jacques, tu n'es pas (encore) dans la navette ? )
Bref, l'idée de jbongrain est très bonne.
Pour avoir l'extension, il suffit d'ajouter "x" (et "n" pour
le nom du fichier) :
set bat=%~dpnx0%
(guillemets à ajouter, selon la saison).
Pour les changements de répertoire, le problème est
effectivement contourné, si l'on met la ligne en début du
batch.
Pour le message d'erreur avec un simple del cela provient
du processeur de traitement des batchs, qui recharge
(intégralement) le fichier batch à la fin de chaque ligne
(ce qui permet de faire des batchs qui se modifient eux-même
en cours de traitement).
Du coup le processeur ne trouve pas le fichier, après
l'exécution du del, d'où le message d'erreur.
L'idée (de ~Jean-Marc~) du START, qui ouvre un nouvel
environnement est donc astucieuse.
(HS : Jacques, tu n'es pas (encore) dans la navette ? )
Bref, l'idée de jbongrain est très bonne. Pour avoir l'extension, il suffit d'ajouter "x" (et "n" pour le nom du fichier) : set bat=%~dpnx0% (guillemets à ajouter, selon la saison).
Pour les changements de répertoire, le problème est effectivement contourné, si l'on met la ligne en début du batch.
Pour le message d'erreur avec un simple del cela provient du processeur de traitement des batchs, qui recharge (intégralement) le fichier batch à la fin de chaque ligne (ce qui permet de faire des batchs qui se modifient eux-même en cours de traitement). Du coup le processeur ne trouve pas le fichier, après l'exécution du del, d'où le message d'erreur.
L'idée (de ~Jean-Marc~) du START, qui ouvre un nouvel environnement est donc astucieuse.
@-salutations
Michel Claveau
Méta-MCI \(MVP\)
Re !
Il y a quand même un inconvénient, avec START /B : les processeurs de commandes s'accumulent. On peut les voir, ensuite, dans le gestionnaire de tâches. Certes, ils disparaîtront à l'arrêt-machine suivant. Mais, sur un serveur qui reste toujours en route...
Une solution légèrement différente :
set bat=%~dpnx0% ::: echo del /f %bat%>%TEMP%DELE.BAT & %TEMP%DELE.BAT
Il restera un petit fichier, dans un répertoire temporaire, qui sera nettoyé par windows, un jour ou l'autre.
@-salutations
Michel Claveau
Re !
Il y a quand même un inconvénient, avec START /B : les
processeurs de commandes s'accumulent. On peut les voir,
ensuite, dans le gestionnaire de tâches.
Certes, ils disparaîtront à l'arrêt-machine suivant. Mais,
sur un serveur qui reste toujours en route...
Une solution légèrement différente :
set bat=%~dpnx0%
:::
echo del /f %bat%>%TEMP%DELE.BAT & %TEMP%DELE.BAT
Il restera un petit fichier, dans un répertoire temporaire,
qui sera nettoyé par windows, un jour ou l'autre.
Il y a quand même un inconvénient, avec START /B : les processeurs de commandes s'accumulent. On peut les voir, ensuite, dans le gestionnaire de tâches. Certes, ils disparaîtront à l'arrêt-machine suivant. Mais, sur un serveur qui reste toujours en route...
Une solution légèrement différente :
set bat=%~dpnx0% ::: echo del /f %bat%>%TEMP%DELE.BAT & %TEMP%DELE.BAT
Il restera un petit fichier, dans un répertoire temporaire, qui sera nettoyé par windows, un jour ou l'autre.
@-salutations
Michel Claveau
Jacques Barathon [MS]
"Méta-MCI (MVP)" wrote in message news:46bc6b69$0$25951$
Bonjour !
(HS : Jacques, tu n'es pas (encore) dans la navette ? )
Pas encore. Et d'ailleurs, avec leur problème d'isolation thermique je me dis que j'ai bien fait de passer mon tour...
Bref, l'idée de jbongrain est très bonne. Pour avoir l'extension, il suffit d'ajouter "x" (et "n" pour le nom du fichier) : set bat=%~dpnx0% (guillemets à ajouter, selon la saison).
Je savais bien qu'un kador du batch aurait une telle combinaison dans sa manche...
Pour le message d'erreur avec un simple del cela provient du processeur de traitement des batchs, qui recharge (intégralement) le fichier batch à la fin de chaque ligne (ce qui permet de faire des batchs qui se modifient eux-même en cours de traitement). Du coup le processeur ne trouve pas le fichier, après l'exécution du del, d'où le message d'erreur.
Intéressant, j'ignorais que cmd.exe rechargeait un batch à la fin de chaque ligne. Merci pour l'info. En effet, ça ouvre des perspectives! ;-)
Jacques
"Méta-MCI (MVP)" <enleverlesX.XmcX@XmclaveauX.com> wrote in message
news:46bc6b69$0$25951$ba4acef3@news.orange.fr...
Bonjour !
(HS : Jacques, tu n'es pas (encore) dans la navette ? )
Pas encore. Et d'ailleurs, avec leur problème d'isolation thermique je me
dis que j'ai bien fait de passer mon tour...
Bref, l'idée de jbongrain est très bonne.
Pour avoir l'extension, il suffit d'ajouter "x" (et "n" pour le nom du
fichier) :
set bat=%~dpnx0%
(guillemets à ajouter, selon la saison).
Je savais bien qu'un kador du batch aurait une telle combinaison dans sa
manche...
Pour le message d'erreur avec un simple del cela provient du processeur
de traitement des batchs, qui recharge (intégralement) le fichier batch à
la fin de chaque ligne (ce qui permet de faire des batchs qui se modifient
eux-même en cours de traitement).
Du coup le processeur ne trouve pas le fichier, après l'exécution du del,
d'où le message d'erreur.
Intéressant, j'ignorais que cmd.exe rechargeait un batch à la fin de chaque
ligne. Merci pour l'info. En effet, ça ouvre des perspectives! ;-)
"Méta-MCI (MVP)" wrote in message news:46bc6b69$0$25951$
Bonjour !
(HS : Jacques, tu n'es pas (encore) dans la navette ? )
Pas encore. Et d'ailleurs, avec leur problème d'isolation thermique je me dis que j'ai bien fait de passer mon tour...
Bref, l'idée de jbongrain est très bonne. Pour avoir l'extension, il suffit d'ajouter "x" (et "n" pour le nom du fichier) : set bat=%~dpnx0% (guillemets à ajouter, selon la saison).
Je savais bien qu'un kador du batch aurait une telle combinaison dans sa manche...
Pour le message d'erreur avec un simple del cela provient du processeur de traitement des batchs, qui recharge (intégralement) le fichier batch à la fin de chaque ligne (ce qui permet de faire des batchs qui se modifient eux-même en cours de traitement). Du coup le processeur ne trouve pas le fichier, après l'exécution du del, d'où le message d'erreur.
Intéressant, j'ignorais que cmd.exe rechargeait un batch à la fin de chaque ligne. Merci pour l'info. En effet, ça ouvre des perspectives! ;-)
Jacques
Gilles LAURENT [MVP]
"~Jean-Marc~ [MVP]" a écrit dans le message de news:% | Bonjour à tous,
Bonjour,
| petit quizzzzzzz..... :-) | | Il arrive de temps à autre que j'aie à lancer des batchs qui | ne servent qu'une fois (des installations, souvent). | | Pour ne pas laisser trainer des bat partout sur le disque dur, | j'utilise cette astuce : | | Au début du bat : | set bat=%0% | | Et en dernière ligne : | start /B %comspec% /c "ping 127.0.0.1 -n 5 && del /f %bat%" | | Je serais curieux de savoir si vous avez une autre méthode ? | (en bat de préférence, autres languages acceptés... ;-) ) | | @+
Une solution alternative :
--- Couper ici : batch.bat --- @echo off set rm=%temp%rm.vbs
%rm% echo Set oFs=CreateObject("Scripting.FileSystemObject")
"~Jean-Marc~ [MVP]" <doc.j-m.OTER@ouanadoudou.fr> a écrit dans le
message de
news:%23ohYuFf2HHA.5696@TK2MSFTNGP02.phx.gbl
| Bonjour à tous,
Bonjour,
| petit quizzzzzzz..... :-)
|
| Il arrive de temps à autre que j'aie à lancer des batchs qui
| ne servent qu'une fois (des installations, souvent).
|
| Pour ne pas laisser trainer des bat partout sur le disque dur,
| j'utilise cette astuce :
|
| Au début du bat :
| set bat=%0%
|
| Et en dernière ligne :
| start /B %comspec% /c "ping 127.0.0.1 -n 5 && del /f %bat%"
|
| Je serais curieux de savoir si vous avez une autre méthode ?
| (en bat de préférence, autres languages acceptés... ;-) )
|
| @+
Une solution alternative :
--- Couper ici : batch.bat ---
@echo off
set rm=%temp%rm.vbs
%rm% echo Set oFs=CreateObject("Scripting.FileSystemObject")
"~Jean-Marc~ [MVP]" a écrit dans le message de news:% | Bonjour à tous,
Bonjour,
| petit quizzzzzzz..... :-) | | Il arrive de temps à autre que j'aie à lancer des batchs qui | ne servent qu'une fois (des installations, souvent). | | Pour ne pas laisser trainer des bat partout sur le disque dur, | j'utilise cette astuce : | | Au début du bat : | set bat=%0% | | Et en dernière ligne : | start /B %comspec% /c "ping 127.0.0.1 -n 5 && del /f %bat%" | | Je serais curieux de savoir si vous avez une autre méthode ? | (en bat de préférence, autres languages acceptés... ;-) ) | | @+
Une solution alternative :
--- Couper ici : batch.bat --- @echo off set rm=%temp%rm.vbs
%rm% echo Set oFs=CreateObject("Scripting.FileSystemObject")
set bat=%~dpnx0% echo %bat% :: :: :: set h=%time:~0,2% set m=%time:~3,2% set /Am=m+1 if /I %m% GEQ 60 ( set /Ah+=1 set /Am-` ) if /I %h% GEQ 24 set /Ah-$ at %h%:%m% cmd /cdel /f %bat%
Le fichier sera supprimé au début de la minute (calendaire) suivante.
@-salutations
Michel Claveau
Salut !
à tordu, tordu et demi :
@echo off
set bat=%~dpnx0%
echo %bat%
::
::
::
set h=%time:~0,2%
set m=%time:~3,2%
set /Am=m+1
if /I %m% GEQ 60 (
set /Ah+=1
set /Am-`
)
if /I %h% GEQ 24 set /Ah-$
at %h%:%m% cmd /cdel /f %bat%
Le fichier sera supprimé au début de la minute (calendaire) suivante.
set bat=%~dpnx0% echo %bat% :: :: :: set h=%time:~0,2% set m=%time:~3,2% set /Am=m+1 if /I %m% GEQ 60 ( set /Ah+=1 set /Am-` ) if /I %h% GEQ 24 set /Ah-$ at %h%:%m% cmd /cdel /f %bat%
Le fichier sera supprimé au début de la minute (calendaire) suivante.
@-salutations
Michel Claveau
jbongran
Gilles LAURENT [MVP] wrote:
"~Jean-Marc~ [MVP]" a écrit dans le message de news:%
Bonjour à tous,
Bonjour,
petit quizzzzzzz..... :-)
Il arrive de temps à autre que j'aie à lancer des batchs qui ne servent qu'une fois (des installations, souvent).
Pour ne pas laisser trainer des bat partout sur le disque dur, j'utilise cette astuce :
Au début du bat : set bat=%0%
Et en dernière ligne : start /B %comspec% /c "ping 127.0.0.1 -n 5 && del /f %bat%"
Je serais curieux de savoir si vous avez une autre méthode ? (en bat de préférence, autres languages acceptés... ;-) )
@+
Une solution alternative :
--- Couper ici : batch.bat --- <@echo off set rm=%temp%rm.vbs
%rm% echo Set oFs=CreateObject("Scripting.FileSystemObject")
Petites variantes pour l'appel du vbs, qui n'a d'autre interêt que d'éviter de parcourir la collection arguments, permettre le "retry" au cas où le bat ne serait pas encore fermé, et l'usage de cscript au lieu de wscript, permettant, au moins sur ma machien, d'éviter une fenêtre d'avertissement ;-) Ps pour Gilles Laurent: je n'ai pas compris l'usage du %rm% en préfixe de chaque ligne, tu peux m'en dire plus ?
@echo off set rm=%temp%rm.vbs %rm% echo Set oFs=CreateObject("Scripting.FileSystemObject") %rm% echo oFs.DeleteFile WScript.ScriptFullName,True %rm% echo Do Until oFs.FileExists %~dpnx0% %rm% echo On Error Resume Next %rm% echo oFs.DeleteFile %~dpnx0%,True %rm% echo WScript.Sleep 100 %rm% echo Loop %rm% echo Set oFs = Nothing start Cscript %rm%
Gilles LAURENT [MVP] wrote:
"~Jean-Marc~ [MVP]" <doc.j-m.OTER@ouanadoudou.fr> a écrit dans le
message de
news:%23ohYuFf2HHA.5696@TK2MSFTNGP02.phx.gbl
Bonjour à tous,
Bonjour,
petit quizzzzzzz..... :-)
Il arrive de temps à autre que j'aie à lancer des batchs qui
ne servent qu'une fois (des installations, souvent).
Pour ne pas laisser trainer des bat partout sur le disque dur,
j'utilise cette astuce :
Au début du bat :
set bat=%0%
Et en dernière ligne :
start /B %comspec% /c "ping 127.0.0.1 -n 5 && del /f %bat%"
Je serais curieux de savoir si vous avez une autre méthode ?
(en bat de préférence, autres languages acceptés... ;-) )
@+
Une solution alternative :
--- Couper ici : batch.bat ---
<@echo off
set rm=%temp%rm.vbs
%rm% echo Set oFs=CreateObject("Scripting.FileSystemObject")
Petites variantes pour l'appel du vbs, qui n'a d'autre interêt que d'éviter
de parcourir la collection arguments, permettre le "retry" au cas où le bat
ne serait pas encore fermé, et l'usage de cscript au lieu de wscript,
permettant, au moins sur ma machien, d'éviter une fenêtre d'avertissement
;-)
Ps pour Gilles Laurent: je n'ai pas compris l'usage du %rm% en préfixe de
chaque ligne, tu peux m'en dire plus ?
@echo off
set rm=%temp%rm.vbs
%rm% echo Set oFs=CreateObject("Scripting.FileSystemObject")
%rm% echo oFs.DeleteFile WScript.ScriptFullName,True
%rm% echo Do Until oFs.FileExists %~dpnx0%
%rm% echo On Error Resume Next
%rm% echo oFs.DeleteFile %~dpnx0%,True
%rm% echo WScript.Sleep 100
%rm% echo Loop
%rm% echo Set oFs = Nothing
start Cscript %rm%
Petites variantes pour l'appel du vbs, qui n'a d'autre interêt que d'éviter de parcourir la collection arguments, permettre le "retry" au cas où le bat ne serait pas encore fermé, et l'usage de cscript au lieu de wscript, permettant, au moins sur ma machien, d'éviter une fenêtre d'avertissement ;-) Ps pour Gilles Laurent: je n'ai pas compris l'usage du %rm% en préfixe de chaque ligne, tu peux m'en dire plus ?
@echo off set rm=%temp%rm.vbs %rm% echo Set oFs=CreateObject("Scripting.FileSystemObject") %rm% echo oFs.DeleteFile WScript.ScriptFullName,True %rm% echo Do Until oFs.FileExists %~dpnx0% %rm% echo On Error Resume Next %rm% echo oFs.DeleteFile %~dpnx0%,True %rm% echo WScript.Sleep 100 %rm% echo Loop %rm% echo Set oFs = Nothing start Cscript %rm%