Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Problème aveuc deux instructions sur la même ligne d'un script bat

5 réponses
Avatar
David
Bonjour le forum,



J'ai créé un bat qui me permet de vérifier si un dossier existe dans
c:\logof$.



Si il n'existe PAS, il crée un dossier avec le nom d'utilisateur.



Si il existe, je demande de créer un nouveau dossier (Double.Use.%username%)
et de faire un logoff.



En plus de ça, un script au logoff efface le dossier nom d'utilisateur mais
laisse Double.Use.%username%



Voici le code :



@echo off



REM Logon



if exist c:\logon$\%username% md c:\logon$\DOUBLE.USER.%username%
shutdown -f -l

md c:\logon$\%username%



Le problème est que je n'arrive pas à mettre deux instructions sur la même
ligne donc la première instruction est md c:\logon$\DOUBLE.USER.%username%
et la deuxième est shutdown -f -l



Lorsque le dossier user existe, il crée un dossier Double.User.%username% +
un dossier shutdown + -f + -1



J'ai aussi essayé de mettre shutdown -f -l mais il me fait un shutdown à
chaque fois alors.



Je suis sure que ça fonctionne vue que j'y étais arrivé mais j'ai ajouté des
REM et depuis il fonctionne plus, j'ai donc supprimé toutes les lignes de
REM (remarques) mais ça fonctionne plus.



J'espère que vous pourrez m'aider.



Merci d'avance et bonne soirée.



Bgs

5 réponses

Avatar
~Jean-Marc~ [MVP]
Salutations *David* !


Hum, a vue de nez et sans tests :


@echo off
REM Logon

if exist c:logon$%username% GOTO DUSER

md c:logon$%username%

GOTO END

:DUSER

md c:logon$DOUBLE.USER.%username%
shutdown -f -l

:END


ou bien

@echo off
REM Logon

if exist c:logon$%username% (
md c:logon$DOUBLE.USER.%username%
shutdown -f -l
) ELSE (
md c:logon$%username%
)

@+

--
~Jean-Marc~ MSAE & MVP Windows XP Fr
M'écrire : http://msmvps.com/docxp/contact.aspx
- http://docxp.mvps.org - http://msmvps.com/docxp/ -
Aide en DIRECT sur Internet : http://communautes-ms.akro-net.org/
Avatar
Alain CROS
Bonjour.

Faire le IF EXIST pour chaque commande.

Alain CROS

"David" a écrit dans le message de news: #
| Bonjour le forum,
|
|
|
| J'ai créé un bat qui me permet de vérifier si un dossier existe dans
| c:logof$.
|
|
|
| Si il n'existe PAS, il crée un dossier avec le nom d'utilisateur.
|
|
|
| Si il existe, je demande de créer un nouveau dossier (Double.Use.%username%)
| et de faire un logoff.
|
|
|
| En plus de ça, un script au logoff efface le dossier nom d'utilisateur mais
| laisse Double.Use.%username%
|
|
|
| Voici le code :
|
|
|
| @echo off
|
|
|
| REM Logon
|
|
|
| if exist c:logon$%username% md c:logon$DOUBLE.USER.%username%
| shutdown -f -l
|
| md c:logon$%username%
|
|
|
| Le problème est que je n'arrive pas à mettre deux instructions sur la même
| ligne donc la première instruction est md c:logon$DOUBLE.USER.%username%
| et la deuxième est shutdown -f -l
|
|
|
| Lorsque le dossier user existe, il crée un dossier Double.User.%username% +
| un dossier shutdown + -f + -1
|
|
|
| J'ai aussi essayé de mettre shutdown -f -l mais il me fait un shutdown à
| chaque fois alors.
|
|
|
| Je suis sure que ça fonctionne vue que j'y étais arrivé mais j'ai ajouté des
| REM et depuis il fonctionne plus, j'ai donc supprimé toutes les lignes de
| REM (remarques) mais ça fonctionne plus.
|
|
|
| J'espère que vous pourrez m'aider.
|
|
|
| Merci d'avance et bonne soirée.
|
|
|
| Bgs
|
|
Avatar
Do Re Mi chel La Si Do
Bonsoir !


J'approuve l'utilisation des parenthèses. Petite précision les parenthèses,
le ELSE doivent se trouver sur la même que la parenthèse de fin de la
première partie du IF. La ligne ) ELSE ( est donc bien placée.

Sinon, certaines commandes nécessitent de se terminer par une fin de ligne,
ce qui peut gêner leur utilisation, en même temps que d'autres, sur la même
ligne (ça, c'est juste pour meubler un peu)


Enfin, sous XP et S-2003, il y a l'étiquette implicite :EOF, ce qui permet
la variante suivante :

@echo off
if exist c:logon$%username% GOTO :DUSER
md c:logon$%username%
GOTO :EOF

:DUSER
md c:logon$DOUBLE.USER.%username%
shutdown -f -l



@-salutations

Michel Claveau
Avatar
Jean-Claude BELLAMY
Dans le message news:% ,
David s'est ainsi exprimé:

J'ai créé un bat qui me permet de vérifier si un dossier existe dans
c:logof$.
Si il n'existe PAS, il crée un dossier avec le nom d'utilisateur.
Si il existe, je demande de créer un nouveau dossier
(Double.Use.%username%) et de faire un logoff.
En plus de ça, un script au logoff efface le dossier nom
d'utilisateur mais laisse Double.Use.%username%
[...]
Le problème est que je n'arrive pas à mettre deux instructions sur
la même ligne donc la première instruction est md
c:logon$DOUBLE.USER.%username% et la deuxième est shutdown -f -l


Pour exécuter plusieurs instructions à la suite, il suffit d'utiliser le
séparateur "&"
(comme dans tout shell UNIX)


if .... md c:logon$DOUBLE.USER.%username% & shutdown -f -l


On peut d'ailleurs finasser l'enchainement de commandes :
- le séparateur "&&" permet d'exécuter la commande suivante
seulement si l'exécution de la commande précédente a réussi.
- le séparateur "||" permet d'exécuter la commande suivante
seulement si l'exécution de la commande précédente a échoué.

...
del %toto% || echo la suppression de %toto% a foiré.
...

...
format k: && echo le formatage de K: a réussi
...

--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.org
*

Avatar
Do Re Mi chel La Si Do
Bonsoir !


C'est tout à fait exact.

Mais toutes les commandes ne peuvent pas s'enchaîner.
Exemple :
dir *.* | find"txt" & echo BBB
provoquera une erreur. Les parenthèses permettent alors de gérer ce genre de
cas.


@-salutations

Michel Claveau