.Bat : Commande de lancement spéciale (32bits + 64bits)
Résolu/Fermé
micromega
Messages postés
131
Date d'inscription
lundi 13 avril 2009
Statut
Membre
Dernière intervention
12 avril 2020
-
5 oct. 2014 à 22:47
micromega Messages postés 131 Date d'inscription lundi 13 avril 2009 Statut Membre Dernière intervention 12 avril 2020 - 30 oct. 2014 à 13:06
micromega Messages postés 131 Date d'inscription lundi 13 avril 2009 Statut Membre Dernière intervention 12 avril 2020 - 30 oct. 2014 à 13:06
A voir également:
- Commande de lancement gta v
- Fichier bat - Guide
- Bat to exe converter - Télécharger - Édition & Programmation
- Pokemon qui bat qui ✓ - Forum Pokémon
- Exécuter un fichier bat automatiquement - Forum Autoit / batch
- Bouchou ka bat traduction ✓ - Forum traduction
17 réponses
micromega
Messages postés
131
Date d'inscription
lundi 13 avril 2009
Statut
Membre
Dernière intervention
12 avril 2020
1
24 oct. 2014 à 01:22
24 oct. 2014 à 01:22
Rien. Ca s'ouvre, se ferme. Rien de plus.
Je redécompose :
= ça fonctionne
Si je fais :
= ça fonctionne.
C'est le fait de placer le seconde commande dans la première qui pose problème.
Soit elle est mal placé (mais j'ai fait des tests de toutes sortes), soit il manque une partie de code (que je ne connais pas)...
Je redécompose :
@Echo off
set d=A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
for %%a in (%d%) do (
for /F "tokens=1" %%k in ('fsutil fsinfo drivetype %%a: ^| findstr "CD-ROM"') do (
if exist "%%k\CHEMIN FICHIER A LANCER" (
call "%%k\CHEMIN FICHIER A LANCER" >NUL 2>&1
)
)
)
= ça fonctionne
Si je fais :
@echo off
Set RegQry=HKLM\Hardware\Description\System\CentralProcessor\0
REG.exe Query %RegQry% | Find /i "x86"
If %ERRORLEVEL% == 0 (
GOTO X86
) ELSE (
GOTO X64
)
:X86
call "%%k\CHEMIN FICHIER A LANCER" >NUL 2>&1
GOTO END
:X64
call "%%k\CHEMIN FICHIER A LANCER" >NUL 2>&1
:End
= ça fonctionne.
C'est le fait de placer le seconde commande dans la première qui pose problème.
Soit elle est mal placé (mais j'ai fait des tests de toutes sortes), soit il manque une partie de code (que je ne connais pas)...
dubcek
Messages postés
18758
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
24 décembre 2024
5 623
14 oct. 2014 à 14:57
14 oct. 2014 à 14:57
hello
essayer avec ! à la place de % dans une boucle FOR
essayer avec ! à la place de % dans une boucle FOR
@Echo off
setlocal enabledelayedexpansion
set d=A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
for %%a in (%d%) do (
for /F "tokens=1" %%k in ('fsutil fsinfo drivetype %%a: ^| findstr "CD-ROM"') do (
if exist "%%k\CHEMIN FICHIER A LANCER" (
Set RegQry=HKLM\Hardware\Description\System\CentralProcessor\0
REG.exe Query !RegQry! | Find /i "x86"
If !ERRORLEVEL! == 0 (
GOTO X86
) ELSE (
GOTO X64
)
......
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour Dubcek,
Merci d'avoir répondu.
J'ai essayé en remplaçant les " % " par des " ! ", mais toujours pas résultat.
La commande s'ouvre et se ferme aussitôt en cliquant dessus.
Si je l'ouvre avec l'Invite de commande, ça me dit que "La syntaxe de la commande est incorrecte".
Le souci viens de la commande de recherche du type de processeur. A elle seule, cela fonctionne, mais incorporée à l'autre commande cela bloque.
Merci
Merci d'avoir répondu.
J'ai essayé en remplaçant les " % " par des " ! ", mais toujours pas résultat.
La commande s'ouvre et se ferme aussitôt en cliquant dessus.
Si je l'ouvre avec l'Invite de commande, ça me dit que "La syntaxe de la commande est incorrecte".
Le souci viens de la commande de recherche du type de processeur. A elle seule, cela fonctionne, mais incorporée à l'autre commande cela bloque.
Merci
dubcek
Messages postés
18758
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
24 décembre 2024
5 623
Modifié par dubcek le 16/10/2014 à 09:20
Modifié par dubcek le 16/10/2014 à 09:20
enlever le :End
j'ignore pourquoi
edit: ou ajouter une commande après:
j'ignore pourquoi
edit: ou ajouter une commande après:
:end
echo bidon>NUL
Bon... alors :
Si je remets des "%" à la place des "!", j'obtiens un résultat différent en ayant enlevé le ":end" :
Avec l'invite de commande, j'obtiens ce message :
Erreur : nombre insuffisant de paramètres de ligne de commande
Le système ne peut pas trouver le nom de fichier de commandes - END
Si je lance en cliquant dessus, ça s'ouvre...puis un peu après ça se referme tout seul
Je ne peux pas ajouter de commande après ":end" car les "call" selon le processeur doivent s'effectuer avant.
Par contre si je supprime "GOTO END" + ":end" j'obtiens :
Erreur : nombre insuffisant de paramètres de ligne de commande
ça change...
Si je remets des "%" à la place des "!", j'obtiens un résultat différent en ayant enlevé le ":end" :
Avec l'invite de commande, j'obtiens ce message :
Erreur : nombre insuffisant de paramètres de ligne de commande
Le système ne peut pas trouver le nom de fichier de commandes - END
Si je lance en cliquant dessus, ça s'ouvre...puis un peu après ça se referme tout seul
Je ne peux pas ajouter de commande après ":end" car les "call" selon le processeur doivent s'effectuer avant.
Par contre si je supprime "GOTO END" + ":end" j'obtiens :
Erreur : nombre insuffisant de paramètres de ligne de commande
ça change...
dubcek
Messages postés
18758
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
24 décembre 2024
5 623
Modifié par dubcek le 17/10/2014 à 08:59
Modifié par dubcek le 17/10/2014 à 08:59
nombre insuffisant de paramètres de ligne de commande
cette erreur est générée par le call, je ne connais pas le script
ajouter une commande "bidon" après le :end ne change rien au code
cette erreur est générée par le call, je ne connais pas le script
ajouter une commande "bidon" après le :end ne change rien au code
Bonjour,
Si j'ajoute un une commande après le ":end", j'obtiens le même résultat :
fenêtre qui s'ouvre et se ferme automatiquement...
Si j'ajoute un une commande après le ":end", j'obtiens le même résultat :
fenêtre qui s'ouvre et se ferme automatiquement...
dubcek
Messages postés
18758
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
24 décembre 2024
5 623
22 oct. 2014 à 08:02
22 oct. 2014 à 08:02
mettre une commande pause pour voir ce qu'il fait
dubcek
Messages postés
18758
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
24 décembre 2024
5 623
24 oct. 2014 à 09:53
24 oct. 2014 à 09:53
C'est le fait de placer le seconde commande dans la première qui pose problème.
je suis pas sûr de comprendre
faire ca ?
je suis pas sûr de comprendre
faire ca ?
If %ERRORLEVEL% == 0 (
call "%%k\CHEMIN FICHIER A LANCER" >NUL 2>&1
) ELSE (
call "%%k\CHEMIN FICHIER A LANCER" >NUL 2>&1
)
micromega
Messages postés
131
Date d'inscription
lundi 13 avril 2009
Statut
Membre
Dernière intervention
12 avril 2020
1
24 oct. 2014 à 11:07
24 oct. 2014 à 11:07
Bonjour Dubcek,
Il y a eu une évolution.
Maintenant le commande se lance correctement (elle ne se ferme pas toute seule), mais j'obtiens le message d'erreur suivant :
ERREUR : syntaxe incorrecte.
Entrez "REG QUERY /?" pour afficher la syntaxe.
Pour "C'est le fait de placer le seconde commande dans la première qui pose problème", je voulais dire de placer le code qui lance un fichier selon le processeur dans l'autre code (voir précédent poste, j'ai séparé les 2 codes car l'un ou l'autre fonctionne tout seul, mais pas ensemble).
Merci
Il y a eu une évolution.
Maintenant le commande se lance correctement (elle ne se ferme pas toute seule), mais j'obtiens le message d'erreur suivant :
ERREUR : syntaxe incorrecte.
Entrez "REG QUERY /?" pour afficher la syntaxe.
Pour "C'est le fait de placer le seconde commande dans la première qui pose problème", je voulais dire de placer le code qui lance un fichier selon le processeur dans l'autre code (voir précédent poste, j'ai séparé les 2 codes car l'un ou l'autre fonctionne tout seul, mais pas ensemble).
Merci
dubcek
Messages postés
18758
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
24 décembre 2024
5 623
24 oct. 2014 à 12:21
24 oct. 2014 à 12:21
dans REG.exe Query %RegQry%
%RegQry% est vide ? ou contient un espace ?
%RegQry% est vide ? ou contient un espace ?
dubcek
Messages postés
18758
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
24 décembre 2024
5 623
24 oct. 2014 à 14:18
24 oct. 2014 à 14:18
c'est ça que tu veux faire ?
setlocal enabledelayedexpansion
set d=A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
for %%a in (%d%) do (
for /F "tokens=1" %%k in ('fsutil fsinfo drivetype %%a: ^| findstr "CD-ROM"') do (
if exist "%%k\CHEMIN FICHIER A LANCER" (
Set RegQry=HKLM\Hardware\Description\System\CentralProcessor\0
REG.exe Query !RegQry! | Find /i "x86"
If !ERRORLEVEL! == 0 (
call "%%k\CHEMIN FICHIER A LANCER" >NUL 2>&1
) ELSE (
call "%%k\CHEMIN FICHIER A LANCER" >NUL 2>&1
)
goto fin
)
)
)
:fin
pause
micromega
Messages postés
131
Date d'inscription
lundi 13 avril 2009
Statut
Membre
Dernière intervention
12 avril 2020
1
28 oct. 2014 à 11:56
28 oct. 2014 à 11:56
Bonjour Dubcek,
Bon bah encore une fois merci : ça semble fonctionner ainsi.
Juste deux questions liées à mes erreurs :
1) Quel est la différence entre "!RegQry!" et "%RegQry%", puis entre "!ERRORLEVEL!" et "%ERRORLEVEL%" ?
2) Dans le script que tu m'as donné tu place un ")ELSE(" entre le ":X86" et le ":X64" --> selon le processeur il va sur la bonne ligne à exécuter ou alors il teste les deux lignes succéssivement?
Merci à toi
Bon bah encore une fois merci : ça semble fonctionner ainsi.
Juste deux questions liées à mes erreurs :
1) Quel est la différence entre "!RegQry!" et "%RegQry%", puis entre "!ERRORLEVEL!" et "%ERRORLEVEL%" ?
2) Dans le script que tu m'as donné tu place un ")ELSE(" entre le ":X86" et le ":X64" --> selon le processeur il va sur la bonne ligne à exécuter ou alors il teste les deux lignes succéssivement?
Merci à toi
dubcek
Messages postés
18758
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
24 décembre 2024
5 623
28 oct. 2014 à 14:36
28 oct. 2014 à 14:36
setlocal enabledelayedexpansion et !variable! est nécessaire pour les variables modifiées à l'intérieur d'une boucle for
si find trouve x86 errorlevel==0, donc il exécute le 1er sinon le 2ème
If !ERRORLEVEL! == 0 (
call "%%k\CHEMIN FICHIER A LANCER" >NUL 2>&1
) ELSE (
call "%%k\CHEMIN FICHIER A LANCER" >NUL 2>&1
)
si find trouve x86 errorlevel==0, donc il exécute le 1er sinon le 2ème
micromega
Messages postés
131
Date d'inscription
lundi 13 avril 2009
Statut
Membre
Dernière intervention
12 avril 2020
1
30 oct. 2014 à 13:06
30 oct. 2014 à 13:06
OK C'est parfait.
Merci à toi encore une fois !
Merci à toi encore une fois !