L'explication, est dans le (ou les deux) premier(s) caractère(s)
renvoi dans un (nouveau) fichier
ajoute dans le fichier
%rm% contient le nom du fichier.
Mais, il est vrai que Gilles a opté pour une syntaxe peu courante (redirection a priori, et non a posteriori).
@+
Michel Claveau
~Jean-Marc~ [MVP]
Salut Méta-MCI (MVP), tu nous disais :
à 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 /c del /f %bat%
Wow !
-- ~Jean-Marc~ MVP Shell/User Fr ( Vista x86 Ultimate ) - http://msmvps.com/blogs/docxp/ - - http://docxp.mvps.org -
Salut Méta-MCI (MVP),
tu nous disais :
à 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 /c del /f %bat%
Wow !
--
~Jean-Marc~ MVP Shell/User Fr
( Vista x86 Ultimate )
- http://msmvps.com/blogs/docxp/ -
- http://docxp.mvps.org -
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 /c del /f %bat%
Wow !
-- ~Jean-Marc~ MVP Shell/User Fr ( Vista x86 Ultimate ) - http://msmvps.com/blogs/docxp/ - - http://docxp.mvps.org -
jbongran
Méta-MCI (MVP) wrote:
Bonsoir !
L'explication, est dans le (ou les deux) premier(s) caractère(s)
renvoi dans un (nouveau) fichier
ajoute dans le fichier
%rm% contient le nom du fichier.
Mais, il est vrai que Gilles a opté pour une syntaxe peu courante (redirection a priori, et non a posteriori).
@+
Michel Claveau
Merci Michel. Je comprend mieux maintenant: j'avait pris ces caractères pour une fantaisie d'outlook quotefix. Du coup le bout de code que j'ai posté manque de ces caractères en suffixe de ligne, à corriger donc ;-(
Méta-MCI (MVP) wrote:
Bonsoir !
L'explication, est dans le (ou les deux) premier(s) caractère(s)
renvoi dans un (nouveau) fichier
ajoute dans le fichier
%rm% contient le nom du fichier.
Mais, il est vrai que Gilles a opté pour une syntaxe peu courante
(redirection a priori, et non a posteriori).
@+
Michel Claveau
Merci Michel.
Je comprend mieux maintenant: j'avait pris ces caractères pour une fantaisie
d'outlook quotefix.
Du coup le bout de code que j'ai posté manque de ces caractères en suffixe
de ligne, à corriger donc ;-(
L'explication, est dans le (ou les deux) premier(s) caractère(s)
renvoi dans un (nouveau) fichier
ajoute dans le fichier
%rm% contient le nom du fichier.
Mais, il est vrai que Gilles a opté pour une syntaxe peu courante (redirection a priori, et non a posteriori).
@+
Michel Claveau
Merci Michel. Je comprend mieux maintenant: j'avait pris ces caractères pour une fantaisie d'outlook quotefix. Du coup le bout de code que j'ai posté manque de ces caractères en suffixe de ligne, à corriger donc ;-(
moi
Notre ami ~Jean-Marc~ [MVP] tapota :
Bonjour à tous,
petit quizzzzzzz..... :-)
Il arrive de temps à autre que j'aie à lancer des batchs qui ne servent qu'une fois (des installations, souvent).
salut à tous et à toutes ...
Franchement, je n'imaginais pas tant de propositions sur un thème aussi arride ;o) L'inspiration surgit parfois de façon bien curieuse ...
Ceci étant, j'ai l'impression que certaines solutions sont "un peu compliquées" et necessiteront "a priori" des autorisations plus ou moins importantes sur l'environnement ( la solution avec "at" suppose pas mal de choses, par exemple). Perso, je préfère les solutions minimales en terme de "pouvoir" pour appliquer tout ça, le cas échéant, dans un domaine 2003 avec des stratégies de groupes un peu blindées ;o)
Il me semble que les solutions proposées en premier sont les moins gourmandes en ce sens mais j'ai qq doutes ...
Qqun a des idées précises en ce sens ?
A+
HB
Notre ami ~Jean-Marc~ [MVP] tapota :
Bonjour à tous,
petit quizzzzzzz..... :-)
Il arrive de temps à autre que j'aie à lancer des batchs qui
ne servent qu'une fois (des installations, souvent).
salut à tous et à toutes ...
Franchement, je n'imaginais pas tant de propositions sur un thème
aussi arride ;o)
L'inspiration surgit parfois de façon bien curieuse ...
Ceci étant, j'ai l'impression que certaines solutions sont "un peu
compliquées" et necessiteront "a priori" des autorisations plus ou
moins importantes sur l'environnement ( la solution avec "at" suppose
pas mal de choses, par exemple).
Perso, je préfère les solutions minimales en terme de "pouvoir" pour
appliquer tout ça, le cas échéant, dans un domaine 2003 avec des
stratégies de groupes un peu blindées ;o)
Il me semble que les solutions proposées en premier sont les moins
gourmandes en ce sens mais j'ai qq doutes ...
Il arrive de temps à autre que j'aie à lancer des batchs qui ne servent qu'une fois (des installations, souvent).
salut à tous et à toutes ...
Franchement, je n'imaginais pas tant de propositions sur un thème aussi arride ;o) L'inspiration surgit parfois de façon bien curieuse ...
Ceci étant, j'ai l'impression que certaines solutions sont "un peu compliquées" et necessiteront "a priori" des autorisations plus ou moins importantes sur l'environnement ( la solution avec "at" suppose pas mal de choses, par exemple). Perso, je préfère les solutions minimales en terme de "pouvoir" pour appliquer tout ça, le cas échéant, dans un domaine 2003 avec des stratégies de groupes un peu blindées ;o)
Il me semble que les solutions proposées en premier sont les moins gourmandes en ce sens mais j'ai qq doutes ...
Qqun a des idées précises en ce sens ?
A+
HB
Gilles LAURENT [MVP]
"jbongran" a écrit dans le message de news:%23eum$
Bonjour Jérôme,
| 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 ;-)
Bien joué ! Par contre concernant la fenêtre d'avertissement, je n'arrive pas à reproduire :-( J'utilisais volontairement Wscript pour éviter l'apparition furtive d'une nouvelle console.
| 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 ?
Hé hé ! Cf réponse de Michel ! J'ai essayé de brouiller les pistes :-)
Deux petites corrections tout de même, les guillemets étant nécessaires dans ce cas ;-)
| %rm% echo Do Until oFs.FileExists %~dpnx0%
%rm% echo Do Until oFs.FileExists "%~dpnx0%"
| %rm% echo oFs.DeleteFile %~dpnx0%,True
%rm% echo oFs.DeleteFile "%~dpnx0%",True
-- Gilles LAURENT [MVP] http://glsft.free.fr
"jbongran" <jbongran@free.fr> a écrit dans le message de
news:%23eum$IE3HHA.2312@TK2MSFTNGP06.phx.gbl
Bonjour Jérôme,
| 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 ;-)
Bien joué ! Par contre concernant la fenêtre d'avertissement, je
n'arrive pas à reproduire :-( J'utilisais volontairement Wscript pour
éviter l'apparition furtive d'une nouvelle console.
| 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 ?
Hé hé ! Cf réponse de Michel !
J'ai essayé de brouiller les pistes :-)
Deux petites corrections tout de même, les guillemets étant nécessaires
dans ce cas ;-)
"jbongran" a écrit dans le message de news:%23eum$
Bonjour Jérôme,
| 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 ;-)
Bien joué ! Par contre concernant la fenêtre d'avertissement, je n'arrive pas à reproduire :-( J'utilisais volontairement Wscript pour éviter l'apparition furtive d'une nouvelle console.
| 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 ?
Hé hé ! Cf réponse de Michel ! J'ai essayé de brouiller les pistes :-)
Deux petites corrections tout de même, les guillemets étant nécessaires dans ce cas ;-)
| %rm% echo Do Until oFs.FileExists %~dpnx0%
%rm% echo Do Until oFs.FileExists "%~dpnx0%"
| %rm% echo oFs.DeleteFile %~dpnx0%,True
%rm% echo oFs.DeleteFile "%~dpnx0%",True
-- Gilles LAURENT [MVP] http://glsft.free.fr
Do Ré Mi Chel La Si Do.
Bonjour !
La solution la plus indépendante, en termes de droits, c'est :
set bat=%~dpnx0% ::: ::: echo del /f %bat%>%TEMP%DELE.BAT & %TEMP%DELE.BAT
Car on reste dans le même processus.
Bonjour !
La solution la plus indépendante, en termes de droits, c'est :
set bat=%~dpnx0%
:::
:::
echo del /f %bat%>%TEMP%DELE.BAT & %TEMP%DELE.BAT
La solution la plus indépendante, en termes de droits, c'est :
set bat=%~dpnx0% ::: ::: echo del /f %bat%>%TEMP%DELE.BAT & %TEMP%DELE.BAT
Car on reste dans le même processus.
Jacques Barathon [MS]
"Do Ré Mi Chel La Si Do." wrote in message news:%
Bonjour !
La solution la plus indépendante, en termes de droits, c'est :
set bat=%~dpnx0% ::: ::: echo del /f %bat%>%TEMP%DELE.BAT & %TEMP%DELE.BAT
Dans la mesure où aucune solution proposée ne s'occupe de vérifier si la suppression a bien eu lieu, ni même de logguer l'information pour que l'utilisateur puisse le vérifier à postériori, je reviens sur la solution la plus simple:
set bat=%~dpnx0% ::: ::: del /f %bat%
Le fait que la tentative de rechargement du fichier donne une erreur n'a aucune importance dans ce contexte. Ce qui compte, c'est que le fichier a bien été supprimé.
Jacques
"Do Ré Mi Chel La Si Do." <enleverlesOmcO@OmclaveauO.com> wrote in message
news:%23oazsCZ3HHA.2312@TK2MSFTNGP06.phx.gbl...
Bonjour !
La solution la plus indépendante, en termes de droits, c'est :
set bat=%~dpnx0%
:::
:::
echo del /f %bat%>%TEMP%DELE.BAT & %TEMP%DELE.BAT
Dans la mesure où aucune solution proposée ne s'occupe de vérifier si la
suppression a bien eu lieu, ni même de logguer l'information pour que
l'utilisateur puisse le vérifier à postériori, je reviens sur la solution la
plus simple:
set bat=%~dpnx0%
:::
:::
del /f %bat%
Le fait que la tentative de rechargement du fichier donne une erreur n'a
aucune importance dans ce contexte. Ce qui compte, c'est que le fichier a
bien été supprimé.
La solution la plus indépendante, en termes de droits, c'est :
set bat=%~dpnx0% ::: ::: echo del /f %bat%>%TEMP%DELE.BAT & %TEMP%DELE.BAT
Dans la mesure où aucune solution proposée ne s'occupe de vérifier si la suppression a bien eu lieu, ni même de logguer l'information pour que l'utilisateur puisse le vérifier à postériori, je reviens sur la solution la plus simple:
set bat=%~dpnx0% ::: ::: del /f %bat%
Le fait que la tentative de rechargement du fichier donne une erreur n'a aucune importance dans ce contexte. Ce qui compte, c'est que le fichier a bien été supprimé.
Jacques
Do Ré Mi Chel La Si Do.
Salut !
donne une erreur n'a aucune importance
Au contraire : ça prouve l'effacement. Pas de message = suppression non effectuée.
@+
MCI
Salut !
donne une erreur n'a aucune importance
Au contraire : ça prouve l'effacement.
Pas de message = suppression non effectuée.
Au contraire : ça prouve l'effacement. Pas de message = suppression non effectuée.
@+
MCI
Gilles LAURENT [MVP]
"Jacques Barathon [MS]" a écrit dans le message de news:
Bonjour Jacques,
| del /f %bat%
C'est en effet la solution la plus simple. Toutefois il est à noter que la variable errorlevel sera reinitialisée à la valeur 0. Ceci peut être problématique dans le cas d'un enchaînement s'appuyant sur le code de sortie du batch.
--- Couper ici : batch.bat --- @echo off
error
del /f %~dpnx0 --- Couper ici : batch.bat ---
C:>batch.bat 'error' n'est pas reconnu en tant que commande interne ou externe, un programme exécutable ou un fichier de commandes. Le fichier de commandes est introuvable.
C:>echo %errorlevel% 0
Donc à mon avis, la solution la plus "générique" consiste à créer un nouveau processus dédié à la suppression du fichier batch. Cette technique n'altérant pas la variable errorlevel. Par exemple :
--- Couper ici : batch.bat --- @echo off set rm=%temp%rm.vbs
%rm% echo Set oFs=CreateObject("Scripting.FileSystemObject")
C:>batch.bat 'error' n'est pas reconnu en tant que commande interne ou externe, un programme exécutable ou un fichier de commandes.
C:>echo %errorlevel% 9009
-- Gilles LAURENT MVP Windows Server - Admin Frameworks http://glsft.free.fr
"Jacques Barathon [MS]" <jbaratho@online.microsoft.com> a écrit dans le
message de
news:O5AgyfZ3HHA.4880@TK2MSFTNGP03.phx.gbl
Bonjour Jacques,
| del /f %bat%
C'est en effet la solution la plus simple. Toutefois il est à noter que
la variable errorlevel sera reinitialisée à la valeur 0. Ceci peut être
problématique dans le cas d'un enchaînement s'appuyant sur le code de
sortie du batch.
--- Couper ici : batch.bat ---
@echo off
error
del /f %~dpnx0
--- Couper ici : batch.bat ---
C:>batch.bat
'error' n'est pas reconnu en tant que commande interne
ou externe, un programme exécutable ou un fichier de commandes.
Le fichier de commandes est introuvable.
C:>echo %errorlevel%
0
Donc à mon avis, la solution la plus "générique" consiste à créer un
nouveau processus dédié à la suppression du fichier batch. Cette
technique n'altérant pas la variable errorlevel. Par exemple :
--- Couper ici : batch.bat ---
@echo off
set rm=%temp%rm.vbs
%rm% echo Set oFs=CreateObject("Scripting.FileSystemObject")
"Jacques Barathon [MS]" a écrit dans le message de news:
Bonjour Jacques,
| del /f %bat%
C'est en effet la solution la plus simple. Toutefois il est à noter que la variable errorlevel sera reinitialisée à la valeur 0. Ceci peut être problématique dans le cas d'un enchaînement s'appuyant sur le code de sortie du batch.
--- Couper ici : batch.bat --- @echo off
error
del /f %~dpnx0 --- Couper ici : batch.bat ---
C:>batch.bat 'error' n'est pas reconnu en tant que commande interne ou externe, un programme exécutable ou un fichier de commandes. Le fichier de commandes est introuvable.
C:>echo %errorlevel% 0
Donc à mon avis, la solution la plus "générique" consiste à créer un nouveau processus dédié à la suppression du fichier batch. Cette technique n'altérant pas la variable errorlevel. Par exemple :
--- Couper ici : batch.bat --- @echo off set rm=%temp%rm.vbs
%rm% echo Set oFs=CreateObject("Scripting.FileSystemObject")
C:>batch.bat 'error' n'est pas reconnu en tant que commande interne ou externe, un programme exécutable ou un fichier de commandes.
C:>echo %errorlevel% 9009
-- Gilles LAURENT MVP Windows Server - Admin Frameworks http://glsft.free.fr
Jacques Barathon [MS]
"Gilles LAURENT [MVP]" wrote in message news:
"Jacques Barathon [MS]" a écrit dans le message de news:
Bonjour Jacques,
| del /f %bat%
C'est en effet la solution la plus simple. Toutefois il est à noter que la variable errorlevel sera reinitialisée à la valeur 0. Ceci peut être problématique dans le cas d'un enchaînement s'appuyant sur le code de sortie du batch.
C'est pas faux :-)
Jacques
"Gilles LAURENT [MVP]" <glsft@free.fr> wrote in message
news:eNRaskc3HHA.2208@TK2MSFTNGP06.phx.gbl...
"Jacques Barathon [MS]" <jbaratho@online.microsoft.com> a écrit dans le
message de
news:O5AgyfZ3HHA.4880@TK2MSFTNGP03.phx.gbl
Bonjour Jacques,
| del /f %bat%
C'est en effet la solution la plus simple. Toutefois il est à noter que
la variable errorlevel sera reinitialisée à la valeur 0. Ceci peut être
problématique dans le cas d'un enchaînement s'appuyant sur le code de
sortie du batch.
"Jacques Barathon [MS]" a écrit dans le message de news:
Bonjour Jacques,
| del /f %bat%
C'est en effet la solution la plus simple. Toutefois il est à noter que la variable errorlevel sera reinitialisée à la valeur 0. Ceci peut être problématique dans le cas d'un enchaînement s'appuyant sur le code de sortie du batch.