Salut,
j'ai un problème de comparaison de nombre sur ce bout de code :
Ne faites pas attention aux "echo" décalés vers la gauche ; ils ne sont là que pour m'aider à débuguer le code, j'ai oublié de les virer...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57 set line=* set /a num=0 set /a total=0 :: nombre total de caractères par ligne (utile pour limiter l'affichage des fichier sur une seule ligne) : set /a maxchar=80 for /f "skip=%skip% tokens=* delims=" %%e in (%thisbatch%.bat) do ( if "%%e" neq "" ( if "%%e" equ "[new instance]" ( if "!line!" neq "*" ( echo !line! set line=* set /a total=0 ) set /a num+=1 echo. echo INSTANCE !num! : ) else if "%%e" neq "[new instance]" ( call :file_only "%%e" echo !file! call :analyse !file! set file_length=!length! if "!line!" neq "*" ( call :analyse "!line!" set line_length=!length! ) else ( set line_length=0 ) set /a total=!line_length!+!file_length! echo !total! if "!total!" leq "%maxchar%" ( set line=!line! !file! ) else if "!total!" gtr "%maxchar%" ( echo !line! if "!file!" neq "" ( set line=** !file! ) set /a total=0 ) ) ) ) goto liste :file_only set file=%~nx1 goto :eof :: :analyse set Chain=%~1 set /a length=-1 :boucle set /a length+=1 set temp=!Chain:~%length%,1! if not "%temp%"=="" goto boucle goto :eof :: :liste echo !line! echo. echo ------------------------------
Comme d'hab un ptit screenshot avec des jolies couleurs pour aider les zyeux : http://img200.imageshack.us/img200/3/20090525131949.jpg
Remarque : je n'ai pas pu inclure tout l'extrait dans le screenshot !
Explication sommaire (le code ici n'est qu'un extrait) :
- C'est un batch qui permet de lancer plusieurs fichiers dans une ou plusieurs instances de notepad++. Utile pour éviter d'avoir à ouvrir plusieurs instances à la main et de cliquer "ouvrir" puis "charger une session" à chaque fois !
- L'utilisateur n'a qu'à rentrer à la main tout à la fin du batch (après un repère) les chemins vers les fichiers, en les intercallant de "[new instance]" à chaque fois qu'il veut en lancer une. Le batch s'analyse lui-même pour trouver le repère et lire les chemins.
- L'extrait de code ci-dessus concerne l'accueil du batch, où on prévient l'utilisateur qu'il va lancer des fichiers dans notepad++, et où on lui affiche le récapitulatif des fichiers/instances qui vont être lancées.
- Comme le récapitulatif affiche "INSTANCE n°x", passe à la ligne, et affiche tout à la suite les fichiers de l'instance listée, j'ai pensé bon de limiter le nombre de fichiers par ligne, en limitant simplement le nombre de caractère par ligne. Ceci simplement pour éviter d'avoir à scroller la console.
Problème :
- j'ai remarqué une ligne vide avec juste un "*" au début. Je ne comprenais vraiment pas d'où ça pouvait venir...
- j'ai fini par me remémoriser un problème simple mais totalement étrange : si l'opérateur compare "9" et "80", il trouve que 9 est plus grand que 80:/
Voilà, tout est dit, je voudrais simplement règler ce problème avec votre aide.![]()
Partager