Discussione:
file.txt come variabile batch
(troppo vecchio per rispondere)
Puzo58
2010-10-26 16:27:53 UTC
Permalink
Vorrei trasformare il contenuto del file autore.txt in una variabile da usare con find, sempre
che sia possibile.
Il file autore.txt contiene ogni volta un nome diverso che find cerca nel file
lista-autori.txt.
Se avessi subito il valore della variabile scriverei
set nome=Dante Alighieri
find /i "%nome%" lista-autori.txt
sempre che questa sintassi sia corretta.
Ma il nome dell'autore e' dentro il file autore.txt
Come posso fare?
Savux
2010-10-31 12:19:58 UTC
Permalink
Post by Puzo58
Vorrei trasformare il contenuto del file autore.txt in una variabile da usare con find, sempre
che sia possibile.
Il file autore.txt contiene ogni volta un nome diverso che find cerca nel file
lista-autori.txt.
Se avessi subito il valore della variabile scriverei
set nome=Dante Alighieri
find /i "%nome%" lista-autori.txt
sempre che questa sintassi sia corretta.
Ma il nome dell'autore e' dentro il file autore.txt
Come posso fare?
http://stackoverflow.com/questions/155932/how-do-you-loop-through-each-line-in-a-text-file-using-a-windows-batch-file
Fede5815
2010-11-01 14:52:57 UTC
Permalink
Anzitutto ti ringrazio per la risposta e anche per la segnalazione del sito
sui batch ma ho l'impressione che la sintassi sia
eccessivamente complessa per il mio problema, o forse non ho capito bene.

In definitiva il mio file "autore.txt" contiene solamente un nome e un
cognome divisi da uno spazio. Il nome e il cognome devono essere passati a
find per controllare se esistono gia' all'interno del file
"lista-autori.txt". Possibile che in bacth si debba ricorrere
necessariamente a un ciclo di for con l'opzione tokens? Non esiste un modo
piu' semplice e immediato?
Grazie di nuovo.
Post by Savux
http://stackoverflow.com/questions/155932/how-do-you-loop-through-each-line-in-a-text-file-using-a-windows-batch-file
unknown
2010-11-01 20:12:27 UTC
Permalink
Mon, 1 Nov 2010 15:52:57 +0100
Post by Fede5815
In definitiva il mio file "autore.txt" contiene solamente un nome e un
cognome divisi da uno spazio. Il nome e il cognome devono essere passati a
find per controllare se esistono gia' all'interno del file
"lista-autori.txt". Possibile che in bacth si debba ricorrere
necessariamente a un ciclo di for con l'opzione tokens? Non esiste un modo
piu' semplice e immediato?
domanda:
come importo nell'environment il contenuto del file gatto.meow ?

presupposto:
il file gatto.meow contiene il testo gatto miagola {to "cr" or "eol" }
/* cr sta a carriage return come eol sta a end of line */

risposta:
con set /p

verifica:
rem stampo il contenuto del file gatto.meow
type gatto.meow
gatto miagola
rem setto la variabile nell'environment di sistema
rem il cui argomento è il contenuto del file gatto.mew
set /p il=<gatto.meow
rem controllo che la variabile sia istanziata
set | find "il="
rem tutto cangia il ciel s'abbella

Cordiali saluti

R. C.
Cossato - Biella
=======================================================================
My pgp key http://pgp.mit.edu:11371/pks/lookup?search=0x86FE80BB&op=index
Fingerprint: 8FC8 05DE 2B53 A8AF 8B2B 6CBF AD23 C4D5 86FE 80BB
=======================================================================
Fede5815
2010-11-02 00:07:21 UTC
Permalink
beh, non saprei dire se il gatto miagola perchè il ciel s'abbella ma di
sicuro tutto cangia... e in meglio.... -:)))
tuttavia non capisco bene il discorso -{to "cr" or "eol" }- e/o l'utilita'
di - set | find "il=" -

in ogni caso mi pare che la questione ruotasse intorno a set /p e al
reindirizzamento <
infatti se scrivo
set /p nomeautore=<nome.txt
find /i "%nomeautore%" lista-autori.txt
il batch funziona.

cordialissimi saluti a te e...al vecchio Guglielmo ......




"R. C." <WriteMeFromTheSite#CorradoRoberto.it> ha scritto nel
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Mon, 1 Nov 2010 15:52:57 +0100
Post by Fede5815
In definitiva il mio file "autore.txt" contiene solamente un nome e un
cognome divisi da uno spazio. Il nome e il cognome devono essere passati a
find per controllare se esistono gia' all'interno del file
"lista-autori.txt". Possibile che in bacth si debba ricorrere
necessariamente a un ciclo di for con l'opzione tokens? Non esiste un modo
piu' semplice e immediato?
come importo nell'environment il contenuto del file gatto.meow ?
il file gatto.meow contiene il testo gatto miagola {to "cr" or "eol" }
/* cr sta a carriage return come eol sta a end of line */
con set /p
rem stampo il contenuto del file gatto.meow
type gatto.meow
gatto miagola
rem setto la variabile nell'environment di sistema
rem il cui argomento è il contenuto del file gatto.mew
set /p il=<gatto.meow
rem controllo che la variabile sia istanziata
set | find "il="
rem tutto cangia il ciel s'abbella
Cordiali saluti
R. C.
Cossato - Biella
=======================================================================
My pgp key http://pgp.mit.edu:11371/pks/lookup?search=0x86FE80BB&op=index
Fingerprint: 8FC8 05DE 2B53 A8AF 8B2B 6CBF AD23 C4D5 86FE 80BB
=======================================================================
unknown
2010-11-02 10:59:57 UTC
Permalink
Tue, 2 Nov 2010 01:07:21 +0100
"Fede5815" wrote:

Ciao.
Post by Fede5815
tuttavia non capisco bene il discorso -{to "cr" or "eol" }- e/o l'utilita'
di - set | find "il=" -
in ordine:
il primo è una questione di statement, ovvero, nel caso in cui avresti
utilizzato il ciclo for per istanziare una variabile, avresti dovuto gestire
lo space encoding, {tokens}in funzione della lunghezza del nome dell'autore,
mentre, con eol, avresti avuto la necessità di terminare il match su di un
delimitatore di carriage, il secondo, ovvero il set, serve a verificare che
la variabile sia effettivamente istanziata, di fatto la stampa a video, nel
tuo caso: {set | find "nomeautore="}
Post by Fede5815
infatti se scrivo
{cut}
Post by Fede5815
il batch funziona.
enjoy :-)

Cordiali saluti

R. C.
Cossato - Biella
=======================================================================
My pgp key http://pgp.mit.edu:11371/pks/lookup?search=0x86FE80BB&op=index
Fingerprint: 8FC8 05DE 2B53 A8AF 8B2B 6CBF AD23 C4D5 86FE 80BB
=======================================================================
Fede5815
2010-11-03 00:09:23 UTC
Permalink
Molti thanks per le ulteriori spiegazioni...
mi pare meritino approfondimenti da parte mia...
di nuovo....

"R. C." <WriteMeFromTheSite#CorradoRoberto.it> ha scritto nel
Post by unknown
Tue, 2 Nov 2010 01:07:21 +0100
il primo è una questione di statement, ovvero, nel caso in cui avresti
utilizzato il ciclo for per istanziare una variabile, avresti dovuto
gestire lo space encoding, {tokens}in funzione della lunghezza del nome
dell'autore, mentre, con eol, avresti avuto la necessità di terminare il
match su di un delimitatore di carriage, il secondo, ovvero il set, serve
a verificare che la variabile sia effettivamente istanziata, di fatto la
stampa a video, nel tuo caso: {set | find "nomeautore="}
Continua a leggere su narkive:
Loading...