|
Dernière réponse | |
---|---|
Sujet : [ FICHIER BATCH ]: Modifier le boot.ini ? | |
nono_robot | You're Welcome
C'est un forum d'entraide ! :sol: |
Aperçu |
---|
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 | 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. |