Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    [BAT] Appendere ad un file righe di testo costruite da elementi in una lista

    Salve a tutti!
    Credo che non sia molto difficile fare ció che cerco di fare... Cerco di spiegarmi:
    Ho varie righe di testo del tipo:
    codice:
    Stringa1
    Stringa2
    Stringa3
     ...
     ...
    Vorrei creare un batch file che per ogni riga mi appenda alla fine di un altro file (chiamiamolo ad esempio dest.txt) la stessa riga, ma modificata (in maniera statica). Praticamente alla fine dell'esecuzione il file dest.txt deve avere una struttura del tipo:
    codice:
    Stringa1 - bla bla bla bla
    Stringa2 - bla bla bla bla
    Stringa3 - bla bla bla bla
     ...
     ...
    Domanda 1:
    É possibile embedare la lista all'interno del batch file? Senza cioè appoggiarmi ad un file esterno che contiene la lista di stringhe.

    Domanda 2:
    Come posso realizzarlo?

    Grazie! :-)

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Ti consiglio vivamente di non usare un batch ma di usare qualche linea di codice in qualsiasi linguaggio di programmazione.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Grazie per la risposta. Ma perché non ritieni adeguato uno script? Non mi sembra complicato da farsi...

  4. #4
    Perché in batch ogni cosa vagamente più complicata di lanciare un'eseguibile è una sofferenza , ogni volta ci si perde in un misto di sintassi criptica, problemi di compatibilità e menate di ogni genere.

    Comunque, credo che una roba del genere
    codice:
    @echo off
    for /f "tokens=*" %%a in (input.txt) do (
      echo %%a - bla bla bla bla >> dest.txt
    )
    potrebbe funzionare.
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Te lo dico perché l'appetito vien mangiando e presto avrai bisogno di altro.
    E lo script potrà diventare complesso, illeggibile, probabilmente impossibile da manutenere.

    Ma poi, scusa, se non ti sembrava complicato da farsi, perché non l'hai scritto tu?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    Quote Originariamente inviata da oregon Visualizza il messaggio
    E lo script potrà diventare complesso, illeggibile, probabilmente impossibile da manutenere.
    Lo script batch parte sempre come tre righe, ma rapidamente degenera in un ginepraio di etichette, for /f e set /a - gli unici costrutti batch che consentono di fare qualcosa di utile, sempre con mezzi rocamboleschi e sottodocumentati.
    Amaro C++, il gusto pieno dell'undefined behavior.

  7. #7
    Ragazzi, ringrazio tutti coloro che hanno risposto. Alla fine sono riuscito, dopo varie (parecchie in realtà) imprecazioni a scrivere lo script, che riporto di seguito. Cosa fa? Scrive nel file hosts di sistema alcuni indirizzi che voglio vengano bloccati. La lista degli indirizzi viene specificata nel file serverlist.txt (che deve essere posizionato nella stessa directory dello script).
    codice:
    @echo off
    set NEWLINE=^& echo.
    set INPUTFILE=%~dp0\serverlist.txt
    set DESTFILE=%WINDIR%\system32\drivers\etc\hosts
    for /f "tokens=*" %%a in (%INPUTFILE%) do (
     findstr /I /P "%%a" %DESTFILE%
     if errorlevel 1 echo %NEWLINE%^127.0.0.1 %%a>>%DESTFILE%
    )

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Ma non facevi prima a modificare il file hosts con il notepad e un copia-incolla??
    Tanto il file serverlist.txt lo devi pure editare ...

    Oppure facevi un banale

    copy hosts+serverlist.txt hosts2

    e cancelli/rinomini ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    577
    Quote Originariamente inviata da MItaly Visualizza il messaggio
    Lo script batch parte sempre come tre righe, ma rapidamente degenera in un ginepraio di etichette, for /f e set /a - gli unici costrutti batch che consentono di fare qualcosa di utile, sempre con mezzi rocamboleschi e sottodocumentati.
    è quello che capita sempre a me

  10. #10
    Quote Originariamente inviata da oregon Visualizza il messaggio
    Ma non facevi prima a modificare il file hosts con il notepad e un copia-incolla??
    Tanto il file serverlist.txt lo devi pure editare ...

    Oppure facevi un banale

    copy hosts+serverlist.txt hosts2

    e cancelli/rinomini ...
    In realtà lo script controlla anche se la riga che si sta per scrivere giá c'è. Questo evita i doppioni all'interno del file hosts, cosa che se avessi editato direttamente il file avrei dovuto controllare a mano, e per parecchie righe sarebbe diventata impossibile...

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.