: Modifier le boot.ini ? [ FICHIER BATCH ] - Windows & Software
Marsh Posté le 06-06-2002 à 22:36:46
oui...
sous linux
Marsh Posté le 06-06-2002 à 22:48:02
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
Marsh Posté le 06-06-2002 à 22:49:48
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 |
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 ....
Marsh Posté le 06-06-2002 à 22:51:54
c est dingue au moment ou tu me disais ca,j etais aussi sur cet exe.
Je regarde ca tout de suite,merci
Marsh Posté le 06-06-2002 à 22:55:09
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.
Marsh Posté le 06-06-2002 à 22:58:03
j'ai entendu parler de munge du kit de ressource mais pas tester
Marsh Posté le 06-06-2002 à 23:06:07
boisorbe : Ca c etait pour mon ancien post munge.exe
dacoincoin : j crois que je suis con,mais j ai rien capte
Marsh Posté le 06-06-2002 à 23:06:52
Yo ! Bigstyle
Toujours des trucs de batchs de ouf !
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 !
Marsh Posté le 06-06-2002 à 23:10:46
loll nono_robot
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é
Marsh Posté le 06-06-2002 à 23:20:20
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 )
Marsh Posté le 06-06-2002 à 23:39:34
Ahhhh ben c encore tordu ton truc
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 !
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.
@+
Marsh Posté le 07-06-2002 à 16:55:51
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
Marsh Posté le 07-06-2002 à 17:14:59
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 !
Allez @+
Ouais Tordu le Bigstyle
Marsh Posté le 07-06-2002 à 20:19:47
Merciii nono_robot
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 !
Marsh Posté le 07-06-2002 à 21:34:40
Ah ok !
J'a pas bien fait gaffe.
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 .
@+
Marsh Posté le 08-06-2002 à 00:53:01
oh merde,j crois que c est bon !
Bon j continue un peu les tests voir si ca respecte tout bien
Marsh Posté le 08-06-2002 à 17:33:56
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
Marsh Posté le 06-06-2002 à 19:15:13
Voila,encore une question concernant les batchs
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.
Message édité par bigstyle le 06-07-2002 à 12:25:14