Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1655 connectés 

 


Dernière réponse
Sujet : [ FICHIER BATCH ]: Modifier le boot.ini ?
nono_robot You're Welcome
C'est un forum d'entraide !  :sol:

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
nono_robot You're Welcome
C'est un forum d'entraide !  :sol:
bigstyle merci beaucoooooooup nono_robot !!!
 
Serieux,j'ai une dette envers toi maintenant ! ;)
Si t as besoin de quelque chose n hesites pas.
 
En fait,j'ai test ca sous win2k et ca passe impec par contre,j'ai remarque sous windows 98 et j imagine 95 aussi,la syntaxe set /p n'est pas reconnue donc ca fonctionne pas.
mais bon,c est pas trop grave :D
bigstyle oh merde,j crois que c est bon ! :D
 
Bon j continue un peu les tests voir si ca respecte tout bien :)
nono_robot Ah ok !
J'a pas bien fait gaffe.  :pt1cable:  
C simple j'ai basé la precedente fonction for sur le delimiteur "="
donc une commande de ce type :
for /f "skip=4 delims==" %i in (boot.ini) do @echo %i
donnera un truc du genre :
multi(0)disk(0)rdisk(2)partition(1)\WINNT
donc sans le reste de la ligne ="Micros...
Il te suffit je pense d'utiliser le delimiteur "\"
donc ca donne :
 
Set trouve=faux  
For /f "skip=4 delims=\" %i in (boot.ini) do if %i == %test% set trouve=vrai  
Echo %trouve%  
 
J'ai enleve le /I et les " puisque c t pour mes tests mais t'a pas besoin en fait.
 
Voilà ca devrait etre bon la .  :D  
@+
bigstyle Merciii nono_robot :D
 
J ai teste mais cette fois ca passe pas :)
 
Apparement pour que cela prenne la valeur "VRAI" il faut que TOUTE la ligne de mon boot.ini soit egale a ma variable test.
 
Or ma variable test est egale a : multi(0)disk(0)rdisk(%Nbpla%)partition(%Nbdis%)  alors que dans mon fichier boot,les lignes correspondantes aux [operating systems] sont de cette forme :  
multi(0)disk(0)rdisk(0)partition(1)\WINNT="Microsoft Windows 2000 Professionnel" /fastdetect
 
 
donc prooooobleme :)
Mais je lache pas l affaire ! :D
nono_robot Coucou Bigstyle !  ;)  
 
Bon concernant tes 2 temps en fait on va simplifier à 1 , tu pourra si tu veux redecomposer en 2 , c toi le chef !
L'utilisation de la fonction FINDSTR je vais la laisser tomber coz le resultat donné sous la console me parait difficile à gérer .
Donc tu a dans une variable test la chaine de carac , fabrique par tes ptites mains , qui correspond à la ligne  
"default=multi(..."
Avant de faire la comparaison avec le fichier boot.ini t'ora pris soin de virer le debut : "default=" de ta variable test,bla bla...
 
Ensuite c tout bete t'initialise une variable genre :
 
Set trouve=faux
 
et tu recherche l'occurence qui t'interresse dans le fichier sans passer par la reinscription du fichier :
 
For /f "skip=4 delims==" %i in (boot.ini) do if /I "%i" == "%test%" set trouve=vrai
Echo %trouve%
 
Voilà de là si au moins 1 occurence du contenu de ta variable test se trouve dans le fichier boot.ini à partir de la ligne 5 la variable trouve sera egal à vrai.
 
La fonction For est ton amie !  :D  
 
Allez @+
Ouais Tordu le Bigstyle ;)
bigstyle j y suis quasiment arrive la...
 
Il me manque juste une ptite verification ...
 
En fait,ca concerne la verification de l existence d'une chaine de caractere.
 
Voila,j ai par exemple la ligne :  
 
findstr /C:"%test%" test2.txt
 
Avec en fait %test% equivalent a ca : multi(0)disk(0)rdisk(%Nbdis%)partition(%Nbpla%)
 
et test2.txt represente toutes les lignes de mon boot.ini qui ont les caracteres multi....(tout a partir de la 4eme ligne quoi ,comme tu m avais bien conseille)
 
Voila,en fait,je lui demande de verifier si la chaine de caractere  multi(0)disk(0)rdisk(%Nbdis%)partition(%Nbpla%)
est presente dans le fichier test2.txt.
 
Une fois ici,je suis bloqué  
En fait,si c est present,ca veut dire que l utilisateur aura pas tappe n importe quoi,sinon il devra recommencer.
Mais je n arrive pas a faire comprendre a mon PC,que si findstr /C:"%test%" test2.txt ne trouve pas d'occurence,alors il doit afficher une erreur.
J avais pense redirige le resultat de findstr /C:"%test%" test2.txt vers un fichier et ensuite regarder si ce fichier fait plus de 0 octect mais ca non plus je sais pas faire en batch .ouiiiiiinnn :D
bigstyle merciiiiii :)
 
Bon j avance doucement mais surement :D
nono_robot Ahhhh ben c encore tordu ton truc   :D  
 
Enfin pour le premier temps , si on suppose que [operating systems] se trouve toujours a la meme ligne suffit de faire genre :
For /f "skip=4 delims=," %i in (boot.ini) do @echo %i >> recup.ini en ligne de commande sachant que recup.ini n'existe pas sinon c pas bon forcement.
Si ca se trouve pas a la meme ligne fo compter le nombre de ligne avant de trouver la chaine , avec genre un if bien place et un ptit compteur que tu recupere pour le skip du prochain for , je te laisse le soin de le faire !  :D  
 
Pour le 2eme temps c simple fo faire ca avec les operations sur les chaines de caracteres et des if , je te laisse un indice quand meme :
Set test=Bigstyle
Echo %test:~,3%
 
Voilà enfin ca depend comment sont contruits tes batchs alors c juste des idees.
@+
bigstyle bon sinon le mieux,c est peut etre que je pose mon probleme.
 
je me rend compte qu en lisant ma question,ca veut rien dire :)
 
Je souhaite en fait modifier le fichier boot.ini (avec menu etc..)
Le boot.ini se presente comme ca :  
 
[boot loader]
timeout=5
default=multi(0)disk(0)rdisk(0)partition(1)\WINNT
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINNT="Microsoft Windows 2000 Server" /fastdetect
multi(0)disk(0)rdisk(0)partition(2)\WINNT="Microsoft Windows 2000 Pro" /fastdetect
 
 
 
Voila,pour le moment,j arrive (merci nono_robot) a generer un fichier qui me cree ca :  
 
[boot loader]
timeout=5
default=multi(0)disk(0)rdisk(0)partition(1)\WINNT
[operating systems]
 
 
Maintenant,suivant l'OS,je peux avoir,1,2 voir 3 lignes differentes qui representent chacune le boot sur un OS.
 
Je souhaite donc dans un 1er temps recuperer dans un fichier tout ce qu'il a apres le [operating systems] de mon boot.ini
 
Dans un 2eme temps,je devrais verifier que ce que j'aurai recupere (dans mon exemple : multi(0)disk(0)rdisk(0)partition(1)\WINNT="Microsoft Windows 2000 Server" /fastdetect
multi(0)disk(0)rdisk(0)partition(2)\WINNT="Microsoft Windows 2000 Pro" /fastdetect) ait bien au moins une de ses parties qui correspond a mon "default=...." qui est plus haut
Concretement je ne peux pas avoir un default=multi(0)disk(0)rdisk(0)partition(3)\WINNT si cette ligne ne se trouve pas dans [operating systems]
 
Bon pour cette verification je pense que je suis tres mal barre avec des batchs mais bon,je suis ouvert a toutes propositions (hormis le fait de programmer ca en VB,ou autre langage :D )
bigstyle loll nono_robot  :lol:  
 
En fait,je voudrais recuperer les dernieres lignes du fichier pour les enregistrer dans un autre fichier.
Mais aussi comparer ces lignes a une ligne predefinie.
 
Voila,si j arrive a faire ca,c est gagné  :hap:
nono_robot Yo ! Bigstyle  :D  
Toujours des trucs de batchs de ouf !  :pt1cable:    ;)  
Tu sais qu'avec un peu de for et de if et de set ca pourrait marche mais tu veux juste reecrire dans le nouveau fichier les lignes trouves apres l'indicateur ou c otre chose ?
ce que je commence a le cerner le Bigstyle !  :D
bigstyle boisorbe : Ca c etait pour mon ancien post munge.exe ;)
 
dacoincoin : j crois que je suis con,mais j ai rien capte :/
boisorbe j'ai entendu parler de munge du kit de ressource mais pas tester
;)
bigstyle C est presque ca,sauf que dans mon cas,il faut que ce soit a partir d une suite de caractere donnee.
 
Apparement,la ca fonctionne à partir d'un nombre de ligne donné,or dans mon cas,ce nombre peut varier.
bigstyle c est dingue au moment ou tu me disais ca,j etais aussi sur cet exe.
 
Je regarde ca tout de suite,merci :)
pink floyd

bigstyle a écrit a écrit :

lol.
 
j prefere le challenge sous windows :)
 
Mais si tu dis sous linux et que les outils qui conviennent sont du meme genre que grep etc... ca se trouve aussi sous Zindoz :D  




 
arf tiens merde, ca me fait pensser que je l'avais dl ce freeware qui faisait comme grep mais sous DOS, arf c t koi le nom deja ....

bigstyle lol.
 
j prefere le challenge sous windows :)
 
Mais si tu dis sous linux et que les outils qui conviennent sont du meme genre que grep etc... ca se trouve aussi sous Zindoz :D
pink floyd oui...
 
 
sous linux  :D
bigstyle :bounce:  du soir
bigstyle Voila,encore une question concernant les batchs :D
 
Est-il possible de recuperer toute la fin d un fichier texte a partir d une certaine ligne donnee ?
 
Imaginons que j ai un fichier texte comme ceci
 
nombre 1
ligne 2
nombre 3
ligne 4
nombre 5
ligne 6
 
 
Je desire recuperer dans un nouveau fichier texte toute les lignes a partir de ligne 4 (donc avoir ligne 4 nombre5 ....)
 
C est possible ?
 
Merci.

Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR