Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2004
    Messaggi
    1,627

    [BATCH] Utilizzo comando "findstr" per individuare occorrenze codici in due file da confrontare

    Ciao a tutti,
    volevo chiedervi un consiglio:

    ho la necessità dato una file che contiene per ogni riga un valore, ricercare in in più file la presenza ed se presente stampare tutta la riga trovata dov'è presente il codice. Purtroppo devo utilizzare dos è possibile se si come potrei fare? Grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2014
    Messaggi
    519
    quando dici dos intendi MS DOS ?
    in ms dos il comando é FIND
    se dai il comando "help find", ti viene restituita una lista di opzioni, che ti guidano nella scrittura del comando
    prova,
    se non risolvi fatti vivo con info più concrete

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2004
    Messaggi
    1,627
    Si scusa, sono stato troppo frettoloso. Quello che vorrei realizzare è un ciclo for che legga i codici nelle righe di un file txt, e che controlli all'interno di un'altro file di testo la presenza di questo codice. Se presente mi salvi in un terzo file tutta la riga dove ha trovato il codice. Pensavo ad un ciclo for con il comando findstr.

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,303
    Non ti serve nemmeno il ciclo FOR.
    Supponendo che il file contenente le stringhe da cercare si chiami "elenco_codici.txt" e che il file in cui ricercare tali stringhe si chiami "elenco_righe.txt":

    codice:
    FINDSTR /G:elenco_codici.txt elenco_righe.txt > risultato.txt

    Il comando ricerca nel file "elenco_righe.txt" tutte le stringhe presenti nel file "elenco_codici.txt" e salva nel file "risultato.txt" le righe trovate.


    Esempio di file "elenco_codici.txt":
    codice:
    cod1
    cod2
    cod3
    cod4
    cod5

    Esempio di file "elenco_righe.txt":
    codice:
    RIGA1    cod2    PIPPO
    RIGA2    cod5    PLUTO
    RIGA3    cod6    PAPERINO
    RIGA4    cod7    PAPEROGA
    RIGA5    cod1    PAPERONE
    RIGA6    cod9    PAPERINA
    RIGA7    codX    ICSATO

    Risultato:
    codice:
    RIGA1   cod2    PIPPO
    RIGA2   cod5    PLUTO
    RIGA5   cod1    PAPERONE

    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2004
    Messaggi
    1,627
    avevo provato una cosa del genere:

    FINDSTR /G:1.txt C:\path\*.txt > risultato.txt

    però così avevo notato che se trova 10 volte una corrispondenza me le riporta tutte e 10 mentre io volevo inserirne solo una, inoltre è possibile scrivere una riga qual'ora non la trovi?

  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,303
    Quote Originariamente inviata da james81 Visualizza il messaggio
    avevo provato una cosa del genere:

    FINDSTR /G:1.txt C:\path\*.txt > risultato.txt

    però così avevo notato che se trova 10 volte una corrispondenza me le riporta tutte e 10 mentre io volevo inserirne solo una, inoltre è possibile scrivere una riga qual'ora non la trovi?
    No, lui non può "decidere" a priori di scartare delle righe (in base a che criterio?)... il comando serve a TROVARE e lui, giustamente, tira fuori tutto ciò che trova.
    La seconda domanda è leggermente in contraddizione con la prima: vuoi stampare le righe che TROVA o quelle che NON TROVA? Mettiti d'accordo... se vuoi che stampi le righe che NON trova, c'è l'opzione /V (Stampa solo le righe che non contengono corrispondenze), ma capirai che è l'esatto contrario di quello che hai chiesto.

    Ad ogni modo, dando il comando FINDSTR /? esce la guida... c'è scritto tutto.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2004
    Messaggi
    1,627
    Detto giusto LeleFt, sono io che mi sono rispiegato male.
    Riprendendo l'esempio che hai dato te, volevo oltre ad estrarre e righe, anche sapere per quali valori contenuti in "elenco_codici.txt" non ha trovato nessuna corrispondenza.
    Il problema che descrivevo, è che risultato.txt contiente giustamente tutto quello che ha trovato, ma metà dei valori sono uguali, in quanto la ricerca che vado a fare è fatta in dei file che magari contengono informazioni duplicate.
    Volevo creare un file di output con solo un valore per ogni corrispondeza, invece così me ne trovo anche 20-30.
    E non sò invece per quali valori contenuti in elenco_codici.txt non ha trovato corrispondenze.

    Cioè nella logica il sistema dovrebbe funzionare così: leggo prima valore in elenco_codici.txt, lo cerco nei vari files, appena trovo la prima corrispondenza passo alla seconda riga di elenco_codici.txt, se non trovo nulla, lo scrivo da qualche parte
    Ultima modifica di james81; 09-05-2019 a 11:22

  8. #8
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,303
    Scrivi un programma che lo faccia... è una logica troppo complessa per poter essere risolta con i soli comandi DOS a disposizione.

    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  9. #9
    Utente di HTML.it
    Registrato dal
    Nov 2004
    Messaggi
    1,627
    Magari, purtroppo dev'essere fatta solo in dos

  10. #10
    se non si può fare --> non si può fare

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.