Hello,
Je viens ici poster différents problèmes que j'ai rencontré en batch, et venir vous demander des explications ;)
Je vais donc vous poster des extraits de batch où ça coince :
Merci d'avance pour les réponses !
Domble m'a conseillé de venir ici, et m'a recommandé koKoTis ;)
-------
1)Ici, il y a un problème d'errorlevel.Code:
1
2
3
4
5
6
7
8
9
10 for /f "tokens=*" %%A in ('dir "%systemdrive%\" /S /AD /B ^| find /i "BAK"') do if /i '%%~nA'=='BAK' ( dir /b /a-d "%%A" >nul 2>nul if %errorlevel%==0 ( for /f "tokens=*" %%B in ('dir /B /A-D "%%A"') do ( cd "%%~dpA" if exist %%B ( echo -^(BAD^)- %%~dpA%%B echo -^> -^(LEGITIME^)- %%A\%%B echo. echo.)))) >> "%desktop%\LZ.log"
J'ai des fichiers introuvables qui apparaissent en console, il semble y avoir un problème avec l'errorlevel dans les boucles FOR. Un développeur m'a conseillé de traiter la chose à partir d'un fichier texte.
2)Et j'obtiens finalement ça : Mémoire vive totale : 2ÿ046 MoCode:for /f "tokens=1-5 delims=: " %%A in ('systeminfo ^| find /i "totale"') do set mem=%%D %%E > NUL
3)Deux problèmes :Code:
1
2
3
4
5
6
7
8
9
10
11
12 (echo Contenu du Fichier Hosts: & echo.) >> dir.txt set /a modif=0 >nul for /f "eol=# tokens=1-2" %%A in (%windir%\system32\drivers\etc\hosts) do ( if NOT %%A==127.0.0.1 ( echo %%A %%B ^>^> Ligne Modifiée ! set /a modif+=1 ) ELSE ( echo %%A %%B ) ) >> dir.txt if '%modif%'=='0' (echo. & echo Aucune ligne Modifiée ;^) ) ELSE ( (echo. & echo /!\ %modif% lignes modifiée^(s^) ! /!\ ) >> dir.txt )
- Sur l'ordinateur d'une autre personne, toutes les lignes s'affichent modifiées, pourtant je ne spécifie pas de délimiteurs (or ceux par défaut sont l'espace et la tabulation, donc je ne comprends pas où est le problème).
- J'avais envie que la ligne ::1 dans le fichier Hosts (qui correspond au localhost) ne soit pas mis en ligne modifiée, mais je n'y arrive pas.
4) @echo off & cls
dir /A "*.%1" >> var.log
dir /A "%2" >> var.log
var.log & del var.log
exit
Pour le %2, ça marche pour %windir%, %systemdrive%\, mais étrangement pas pour %programfiles%, une idée ?
5)Or, cela m'affiche %var% .. Mon but est d'obtenir seulement %windir% (j'aurais aimé faire ça sur un groupe de fichiers).Code:for %%A in (%windir%\bak\skytel.exe) do (set var=%%^~dpA& set var=%var:bak^\=%& echo %var%)
Il semblerait que le problème soit que ce soit un groupe de fichiers qui soit traité dans une boucle for.
Car l'assignation et le fait de transtyper la variable marche autrement (commande dans un boucle for, ou quand on est pas dans une boucle for).
Voilà, merci pour vos réponses !