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)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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"
Ici, il y a un problème d'errorlevel.
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)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
for /f "tokens=1-5 delims=: " %%A in ('systeminfo ^| find /i "totale"') do set mem=%%D %%E > NUL
Et j'obtiens finalement ça : Mémoire vive totale : 2ÿ046 Mo

3)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
)
Deux problèmes :
- 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)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
for %%A in (%windir%\bak\skytel.exe) do (set var=%%^~dpA& set var=%var:bak^\=%& echo %var%)
Or, cela m'affiche %var% .. Mon but est d'obtenir seulement %windir% (j'aurais aimé faire ça sur un groupe de fichiers).
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 !