System(); qui fonctionnne pas

Résolu/Fermé
jojol_8144 Messages postés 132 Date d'inscription vendredi 8 mars 2019 Statut Membre Dernière intervention 5 novembre 2020 - Modifié le 16 juil. 2019 à 16:49
jojol_8144 Messages postés 132 Date d'inscription vendredi 8 mars 2019 Statut Membre Dernière intervention 5 novembre 2020 - 21 juil. 2019 à 22:17
Bonjour,

J'ai le code suivant:

system("for /f "delims=" %%a in ('dir . /b/s ^| findstr /R "\\repertoire" ') do set "path=%%~dpnxa"");
system("echo Le chemin est : %path%");



Mais j'obtiens les erreurs suivantes lors de la compilation:

||=== Build: Debug in setup (compiler: GNU GCC Compiler) ===|
C:\Users\user\Documents\setup\main.cpp|7|error: stray '\' in program|
C:\Users\user\Documents\setup\main.cpp|7|error: stray '\' in program|
C:\Users\user\Documents\setup\main.cpp||In function 'int main()':|
C:\Users\user\Documents\setup\main.cpp|7|error: unable to find string literal operator 'operator""delims' with 'const char [8]', 'unsigned int' arguments|
||=== Build failed: 3 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|


Pourriez-vous m'aider à résoudre ce soucis svp ?

Je code sous Code::Block

2 réponses

Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 101
16 juil. 2019 à 17:02
Bonjour,

Une chaîne de caractère ça commence et ça fini par des guillemets(").
A l'intérieur certains caractères ne sont pas accessibles, il faut les précéder d'un backslash(\). Il s'agit entre autres des caractères guillemets(") et backslash(\). Ça donne un truc du genre :
system("for /f \"delims=\" %%a in ('dir . /b/s ^| findstr /R \"\\\\repertoire\" ') do set \"path=%%~dpnxa\"");
1
jojol_8144 Messages postés 132 Date d'inscription vendredi 8 mars 2019 Statut Membre Dernière intervention 5 novembre 2020 3
Modifié le 16 juil. 2019 à 17:30
Merci la compilation s'effectue bien cependant, lors de l'exécution, j'obtiens ceci sur la console


%%a était inattendu.


J'obtiens ceci en résultat au lieu du chemin de mon répertoire:


%%a était inattendu.
Le chemin est : C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\iCLS\;C:\Program Files\Intel\Intel(R) Management Engine Components\iCLS\;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;C:\Windows\System32\OpenSSH\;C:\Users\Admin\AppData\Local\Microsoft\WindowsApps;
0
jojol_8144 Messages postés 132 Date d'inscription vendredi 8 mars 2019 Statut Membre Dernière intervention 5 novembre 2020 3
19 juil. 2019 à 13:44
Bonjour, pourriez-vous m'aider svp, j'ai modifié en mettant des "\" mais cela ne fonctionne pas....


system("for /f \"delims=\" %%a in ('dir . /b/s ^| findstr /R \"http%3a%2f%2fcygwin.mirror.constant.com%2f$" ') do set \"path=%%~dpnxa\"");
0
ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 225
20 juil. 2019 à 16:49
'lut,
en plus de ce que dit Dalfab, il faut savoir que l'utilisation que tu fais de
system()
ne marchera pas comme tu veux: chaque ligne
system()
lance un interpréteur de commande indépendant, et la variable
path
que tu modifies dans la 1ère ligne ne sera pas visible dans la 2e car sa valeur ne remonte pas au processus parent, c-à-d ton programme, pour qu'elle soit conservée dans son état modifiée pour la 2nde commande. Si tu veux afficher sa valeur ça doit se faire dans un unique appel
system()
.
0
jojol_8144 Messages postés 132 Date d'inscription vendredi 8 mars 2019 Statut Membre Dernière intervention 5 novembre 2020 3
21 juil. 2019 à 22:17
merci, j'ai trouvé la solution à mon problème
0