[PROBLEME] BATCH & lignes a supprimer...

Une difficulté, une précision posez vos questions

Modérateur : WIN32-[GG]

Répondre
swordmaster
Batcheur occasionnel
Messages : 2
Enregistré le : 30 nov. 2010 18:03

[PROBLEME] BATCH & lignes a supprimer...

Message par swordmaster »

bonjour

voila, je souhaite creer un batch qui me permet de recuperer des checklists sur differents serveurs, les mettre toutes les unes a la suite des autres, ajouter le nom du serveur en debut de checklits, et supprimer une partie de chaque checklist qui ne m'est pas utile

je parviens a tout faire sauf une partie, quand je recherche la ligne "fin de checklist" a supprimer, celle-ci, en fonction des serveurs est composée de 2,3 ou 4 decimales, en fonction des jours, et je ne parviens pas a faire en sorte que ca fonctionne

je vous mets ce que j'ai fait:

Code : Tout sélectionner

net use m: /delete
net use m: \\WSC0029\Documents\%username%\Documents
set _m=M:\checklists\
set _n=%_n%
set MYFILES=\\m898900\exploit\Florian\
md \\WSC0029\Documents\%username%\Documents\checklists
ftp -n -s:%MYFILES%login-ftp.scr
for /f "tokens=1,2,3 delims=/ " %%a in ('date /t') do set _n=%%a.%%b.%%c
for /f "tokens=1,2 delims=: " %%a in ('time /t') do set _n=%_n%_%%ah%%bmin

@echo off

rem TRAITEMENT PRORASIX
rem supprime les lignes vides 

for /f "tokens=*" %%I in (%_m%checklist_prorasix) do echo. %%I >> %_m%checklist_prorasix_bis

rem recherche la chaine de caractere "fin de checktist" et son numero de ligne

type %_m%checklist_prorasix_bis | find /n /i "FIN de CHECKLIST" > %_m%checklist_prorasix_ter
for /f %%i in (%_m%checklist_prorasix_ter) do set numligne=%%i
if "%numligne%" == "" goto rientrouvee
set numligne=%numligne:~1,3%
echo %numligne%

rem compte les lignes et affiche la sortie dans un fichier texte

Set compt=

setlocal enableDelayedExpansion
FOR /f "Tokens=*" %%a in ('Type %_m%checklist_prorasix_bis') Do (
Set /A compt +=1
If !compt! LEQ %numligne% echo %%a >> %_m%checklist_prorasix_final
)
endlocal

rem redirection du méssage vers un fichier espion 01.txt:
echo. > 01.txt
echo xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx >> 01.txt
echo xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx          PRORASIX             xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx >> 01.txt
echo xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx >> 01.txt
echo. >> 01.txt
rem redirection du contenu du fichier file.txt vers le fichier espion 01.txt ( pas décrasement ) :
type %_m%checklist_prorasix_final >> 01.txt
rem en écrasant les deux résultats dans le fichier on fait :
type 01.txt > %_m%checklist_prorasix_final
rem effacement du fichier 01.txt
del 01.txt
pause
rem TRAITEMENT NOSOUCIX

for /f "tokens=*" %%I in (%_m%checklist_nosoucix) do echo. %%I >> %_m%checklist_nosoucix_bis

type %_m%checklist_nosoucix_bis | find /n /i "FIN de CHECKLIST" > %_m%checklist_nosoucix_ter
for /f %%i in (%_m%checklist_nosoucix_ter) do set numligne=%%i
if "%numligne%" == "" goto rientrouvee
set numligne=%numligne:~1,2%
echo %numligne%

Set compt=

setlocal enableDelayedExpansion
FOR /f "Tokens=*" %%a in ('Type %_m%checklist_nosoucix_bis') Do (
Set /A compt +=1
If !compt! LEQ %numligne% echo %%a >> %_m%checklist_nosoucix_final
)
endlocal

echo. > 01.txt
echo xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx >> 01.txt
echo xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx          NOSOUCIX             xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx >> 01.txt
echo xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx >> 01.txt
echo. >> 01.txt

type %_m%checklist_nosoucix_final >> 01.txt
type 01.txt > %_m%checklist_nosoucix_final
del 01.txt

etc etc, et ce sur une vingtaine de serveurs

puis:

copy %_m%checklist_prorasix_final+%_m%checklist_nosoucix_final /A \\WSC0029\Documents\%username%\Documents\checklists\checklist_globale_%_n%
del %_m%checklist_prorasix_final %_m%checklist_nosoucix_final 
del %_m%checklist_prorasix_bis %_m%checklist_nosoucix_bis
del %_m%checklist_prorasix_ter %_m%checklist_nosoucix_ter
net use m: /delete
start notepad \\WSC0029\Documents\%username%\Documents\checklists\checklist_globale_%_n%
start %comspec% /c "mode 60,10&title Checklists&color 1e&echo.&echo. Le fichier a ete cree dans&echo.&echo. \\WSC0029\Documents\%username%\Documents\checklists\checklist_globale_%_n%&echo. presser une touche pour quitter&pause>NUL"
voila, c'est un peut trop compliqué pour moi la,

Code : Tout sélectionner

set numligne=%numligne:~1,3%
quand je change le "3" par le nombre de decimale reel de la ligne mon script fonctionne...

d'avance merci
swordmaster
Batcheur occasionnel
Messages : 2
Enregistré le : 30 nov. 2010 18:03

Re: [PROBLEME] BATCH & lignes a supprimer...

Message par swordmaster »

UP ???
Avatar du membre
lazyness
Batcheur débutant
Messages : 11
Enregistré le : 10 juil. 2010 12:58
Localisation : lyon
Contact :

Re: [PROBLEME] BATCH & lignes a supprimer...

Message par lazyness »

Yop,

je n'ai pas tout compris le batch, mais une question me taraude, pourquoi tu set la variable numligne apres le if ?

ca vient peut etre de ca mais peut etre pas, pour le reste le coup des tokens j'ai pas encore bien capté.

peut être que darkbatcher pourra t'aider quand il passera :)

Lazy
Vous sommes seul responsable de notre malheur, c'est Vous qui l'avez inventé et instrumentalisé.
Hades, 13ieme dieu de l'olympe
Répondre