Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Calcolare totale righe file di testo con batch Dos

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

Calcolare totale righe file di testo con batch Dos

Postdi filippo.spinnato » 05/04/12 16:32

Ciao a tutti,
Vorrei calcolare il numero di righe di un file di testo con un batch dos, ma non riesco ad ottenere i risultati sperati, potete aiutarmi?
In pratica, dal codice principale vorrei chiamare una funzione a cui passare un file ed ottenere il Totale delle righe contenute nel file.
Il codice che uso è:
Codice: Seleziona tutto
rem -  programma principale
  Set File= MioFile.txt
  call  Conta %File%  Ris
  echo TOTALE RIGHE: %Ris%
  goto  EOF

:Conta  %NomeFile%  Ris
    set Ris=0
     FOR /F "tokens=*" %%B IN (%1) DO ( SET /a Ris +=1 )
     goto EOF
Grazie
Filippo
Filippo53
filippo.spinnato
Utente Junior
 
Post: 10
Iscritto il: 11/03/10 12:54

Sponsor
 

Postdi infinito1971 » 23/04/12 13:23

Così funziona... ;)

Codice: Seleziona tutto
rem -  programma principale
  @echo off
  Set File=MioFile.txt
  call :Conta
  echo TOTALE RIGHE: %Ris%

:Conta
  set /a Ris=0
  for /f %%a in ('type "%File%"^|find "" /v /c') do set /a Ris=%%a


Un saluto,
infinito1971
Questo business è binario: o sei 1 o sei 0, vivo o morto, non esistono secondi classificati!
Avatar utente
infinito1971
Utente Senior
 
Post: 531
Iscritto il: 01/08/02 21:22
Località: Napoli

Postdi filippo.spinnato » 10/10/12 13:55

Salve, intanto GRAZIE davvero per la soluzione, infatti funziona anche per i file grossi, anche se un po' lenta.

Però, non riesco a trovare una spiegazione al mio codice, che funziona per file fino a circa 500.000 record mentre mi da errore
di Memoria Insufficiente per file di dimensione superiori.
Il codice che uso è:
Codice: Seleziona tutto
@echo off
  rem - file di 100.000 record
  call  :Conta out100.txt  Ris
  echo TOTALE Out100: %Ris%

  rem - file di 700.000 record
  call  :Conta Out700.txt  Ris
  echo TOTALE out100: %Ris%
  goto  EOF

:Conta
     SETLOCAL
     SET cnt=0
     FOR /F "tokens=*" %%a IN ( %1 ) DO ( set /a cnt+=1 )
     rem ECHO cnt : %cnt%
     ENDLOCAL & SET %2=%cnt%
     EXIT /B 0

:EOF
La procedura Conta , in fase di test è inserita nello stesso bat, ma se funziona vorrei metterla in un bat separato per essere utilizzata da altre procedura.
Dove sbaglio?

Grazie ancora per il prezioso aiuto.
Filippo53
Filippo53
filippo.spinnato
Utente Junior
 
Post: 10
Iscritto il: 11/03/10 12:54

Postdi infinito1971 » 30/11/12 17:22

Ciao Filippo,
scusami per il notevole ritardo con cui ti rispondo ma, spesso, il tempo è tiranno e non sono riuscito a risponderti prima.
Ho letto quanto riporti ed ho guardato (senza provarlo) il tuo codice.
Quello che ho notato è uno spazio di troppo quando setti il nome della variabile File e la mancanza di /a al fianco della set relativa variabile Ris; per cui inizierei a modificare il codice nel seguente modo:

Codice: Seleziona tutto
rem -  programma principale
  Set File=MioFile.txt
  call  Conta %File%  Ris
  echo TOTALE RIGHE: %Ris%
  goto  EOF

:Conta  %NomeFile%  Ris
    set /a Ris=0
     FOR /F "tokens=*" %%B IN (%1) DO ( SET /a Ris +=1 )
     goto EOF

Prova e facci sapere se funziona.


Un saluto,
infinito1971
Questo business è binario: o sei 1 o sei 0, vivo o morto, non esistono secondi classificati!
Avatar utente
infinito1971
Utente Senior
 
Post: 531
Iscritto il: 01/08/02 21:22
Località: Napoli

Postdi archimede » 01/12/12 12:19

Codice: Seleziona tutto
@echo off
findstr /R /N "^" nomefile.txt | find /C ":" > temporaneo.txt
set /p totrighe=<temporaneo.txt
echo TOTALE RIGHE: %totrighe%
HTH.

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

Postdi filippo.spinnato » 06/12/12 09:57

Ciao infinito1971,
grazie per la segnalazione, riscrivendo il codice ho commesso qualche errore di digitazione.
Purtroppo il codice non funziona per file di una certa dimensione, deve essere un limite di quel tipo struttura.
Una domanda, e' possibile calcolare il numero Totale dei record in Visual Basic e restituire/assegnare il conteggio al bat ?
Grazie ciao
Filippo
Filippo53
filippo.spinnato
Utente Junior
 
Post: 10
Iscritto il: 11/03/10 12:54

Postdi filippo.spinnato » 06/12/12 10:02

Ciao Alessandro,
grazie per la risposta

Filippo53
Filippo53
filippo.spinnato
Utente Junior
 
Post: 10
Iscritto il: 11/03/10 12:54

Postdi archimede » 06/12/12 15:45

filippo.spinnato ha scritto:grazie per la risposta
Prego, ma ti è servita?

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

Re: Calcolare totale righe file di testo con batch Dos

Postdi infinito1971 » 07/12/12 15:18

Ciao Filippo,
in merito alla tua domanda se e' possibile calcolare il numero Totale dei record in Visual Basic e restituire/assegnare il conteggio al bat, la risposta è affermativa ed è piuttosto semplice :) : basta che scrivi il batch in modo tale che si aspetti di gestire un parametro e da programma vb lanci il batch aprendo una consolle (anche in modo silente) e lanci il comando: nomefile.bat valore_conteggio, dove valore_conteggio è il valore calcolato dallo stesso programma vb.
Spero di essere stato chiaro e di aiuto per la risoluzione del tuo problema.


Un saluto,
infinito1971
Questo business è binario: o sei 1 o sei 0, vivo o morto, non esistono secondi classificati!
Avatar utente
infinito1971
Utente Senior
 
Post: 531
Iscritto il: 01/08/02 21:22
Località: Napoli

Re: Calcolare totale righe file di testo con batch Dos

Postdi libraio » 22/04/14 19:27

Ciao a tutti,
ho trovato questo post che "risolverebbe" il mio caso, ma non so come applicarlo...
S.O. Windows7 Professional
Ho un file xscolastica.txt in una cartella del dextop denominata "aggiornamenti".
Vorrei contare le righe che compongono il contenuto del file (circa 300/350 mila); ho provato ad applicare il batch proposto da Archimede, ma ottengo il risultato "0".
penso di non avere inserito esattamente il percorso del file, ma ho provato in più modi senza risultato; qualcuno mi può aiutare?...
grazie
libraio
Utente Senior
 
Post: 211
Iscritto il: 04/01/10 20:31

Postdi archimede » 23/04/14 09:52

libraio ha scritto:penso di non avere inserito esattamente il percorso del file
Se metti il batch nella stessa cartella del file, non hai bisogno di specificare il percorso.
libraio ha scritto:qualcuno mi può aiutare?
Senza vedere il tuo codice, no.

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

Re: Calcolare totale righe file di testo con batch Dos

Postdi libraio » 23/04/14 15:15

Ho inserito il batch nella cartella del file e funziona.
Grazie
libraio
Utente Senior
 
Post: 211
Iscritto il: 04/01/10 20:31


Torna a Programmazione


Topic correlati a "Calcolare totale righe file di testo con batch Dos":


Chi c’è in linea

Visitano il forum: Nessuno e 3 ospiti