Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

[BATCH] eliminazione righe in base a regole avanzate

Problemi di HTML? Di PHP, ASP, .NET, JSP, Perl, SQL, JavaScript, Visual Basic..?
Vuoi realizzare programmi in C, C++, Java, Ruby o Smalltalk, e non sai da che parte cominciare?
Entra qui e troverai le risposte!

Moderatori: Triumph Of Steel, archimede

[BATCH] eliminazione righe in base a regole avanzate

Postdi Dylan666 » 09/03/17 17:55

Ciao a tutti, la richiesta che sto per fare non so se è gestibile solo con i comandi DOS, quindi se servono utility esterne va benissimo

Io o un TXT di questo tipo:

Codice: Seleziona tutto
Riga uno
Riga due OK

Riga uno
Riga due OK

Riga uno
Riga due
Riga tre ERRORE

Riga uno
Riga due OK

Riga uno
Riga due
Riga tre ERRORE


A me servono solo i gruppi di tre righe, quelli con gli errori, le altre linee le vorrei togliere.
Quindi devo:
  • eliminare tutti i gruppi di solo due righe
    - OPPURE -
  • cercare le righe ok e se le trova cancellare quelle e pure la riga subito prima

Sapete dirmi come fare?
Grazie
Avatar utente
Dylan666
Moderatore
 
Post: 38046
Iscritto il: 18/11/03 16:46

Sponsor
 

Postdi ricky53 » 10/03/17 16:30

Ciao,
con il buon vecchio basic
oppure con il VBA ed excel (qui mi ci muovo bene)

C'è sempre una riga vuota che separa i gruppi di due / tre righe?
Esistono gruppi con più di tre righe?
Esistono anche righe sole?



Se invii un file .TXT con una casistica esaustiva delle situazioni e più vicina possibile a quella reale, ma con dati fittizi, ti posso scrivere il codice in VBA e fare anche il test del codice.
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4464
Iscritto il: 11/04/09 19:29
Località: Italia

Postdi archimede » 11/03/17 03:18

Codice: Seleziona tutto
@echo off
del nuovo.txt
del temporaneo.txt
SETLOCAL DisableDelayedExpansion
FOR /F "usebackq delims=" %%a in (`"findstr /n ^^ originale.txt"`) do (
    set "myVar=%%a"
    call :processLine myVar
)
goto :eof

:processLine
SETLOCAL EnableDelayedExpansion
set "line=!%1!"
set "line=!line:*:=!"
echo(!line!>> temporaneo.txt
If "%line:~-3%"==" OK" (
   del temporaneo.txt
)
If "%line:~-7%"==" ERRORE" (
   type "temporaneo.txt" >> nuovo.txt
   del temporaneo.txt
)
ENDLOCAL
goto :eof
HTH.

Alessandro
archimede
Moderatore
 
Post: 2762
Iscritto il: 07/11/02 12:41
Località: Genova


Torna a Programmazione


Topic correlati a "[BATCH] eliminazione righe in base a regole avanzate":


Chi c’è in linea

Visitano il forum: Nessuno e 3 ospiti