Newsgroup: it.comp.os.dos
Titolo: Espansione Var, caso impossibile?

Ciao a tutti.
Siete la mia ultima spiaggia  :)
Un caso di espansione di variabile (con Win98SE) che fino adesso, dopo 
averle provate tutte, si e' rivelato impossibile, perlomeno per le mie 
conoscenze.
Allora:
set n_=1
set pk%n_%=ugo
Ora, il problema e' che tramite il comando echo non non c'e' verso di 
riuscire ad espandere la seconda variabile:
echo %pk%n_%%
non funziona, come non funzionano altri tentativi, piu' o meno 
"strategici", di aggiungere-levare il carattere %
Volevo far questo perche' la var "n_" verra' incrementata, quindi ad ogni 
suo incremento verranno create piu' variabili "pk%n_%" che naturalmente 
vorrei poi espandere (il rigido "ugo" e' li' solo a scopo di esempio, poi 
ogni var "pk%n_%" avra' un valore diverso), ma la cosa sembra sia 
impossibile.
E' veramente impossibile fare questo oppure sto attraversando una fase 
di rimbambimento acuto?  :(
Ciao e grazie a tutti per gli eventuali aiuti.
mark79

 echo %pk%n_%%
Se non ho frainteso:
for %v in (%n_%) do echo %%pk%%v%
Ciao!
Charlie / » Assistenza PC a distanza « / 
http://aiutopc.shorturl.com

 for %v in (%n_%) do echo %%pk%%v%
provato al prompt del dos e funziona perfettamente (roba da farti un 
monumento), purtroppo pero' non funziona nel file batch.
Mi sono preso il manuale e ho visto che se e' un for da mettere in un 
file batch, alla variabile "%v" va aggiunto un "%", quindi ho provato con
for %%v in (%n_%) do echo %%pk%%%v%
ma non funzia.
provato anche con for %%v in (%n_%) do echo %%pk%%%%v%
ma non funzia ancora.
Ho provato anche qualche altra variante ma ancora niente da fare  :(
Maremma, se si puo' fare al prompt, in qualche modo dovrebbe poter esser 
fatto anche nel batch, o no?
Spero in un'altra tua illuminazione, comunque veramente grazie per il 
for, da solo non ci sarei mai arrivato.
mark79
-- 
Levare "LEVAMI" dall'indirizzo per comunicazioni private.

 echo %pk%n_%%
echo pk%n_%

 provato anche con for %%v in (%n_%) do echo %%pk%%%%v%
  Giuro  che sono  molto a  digiuno di  queste cose,  pero` mi  par di
ricordare che il  '%' va aggiunto *SIA* all'inizio *SIA*  alla fine, e
quindi dovrebbe venir fuori una cosa del tipo:
  for %%v% in (%%n_%%) do echo %%%pk%%%%v%%
  [ vediamo dove ho sbagliato... ;) ]
 
-- 
Cio` che ho scritto, ho scritto.

   [ vediamo dove ho sbagliato... ;) ]
Non funzia ("Errore di sintassi")  :(
Grazie comunque.


, nos...@no.spam says...

Non puo' funzionare, viene naturalmente stampato "pk1", ma questo e' il 
nome della variabile, mentre quello che serve e' che venga stampato il 
suo contenuto, cioe' "ugo".
Grazie comunque.
ciao, mark79


Q: What's the most annoying thing on Usenet?

 in poche righe...
E, ma quello che sto facendo devo passarlo tra alcuni utenti win9x e 
winnt (nt, 2000, xp, in questi non uso il cmd.exe, ma sempre il 
command.com
), quindi con interprete gia' integrato (
command.com
), 
l'interprete "4dos" e' troppo grosso per una distribuzione a tutti ed e' 
pure commerciale.
Grazie comunque.
Ciao, mark79

 Grazie comunque.
set n_=1
for %a in (pk%n_%) do set ugo=%a & command /c echo %%a%

"Uno" <nos...@no.spam> wrote in message news:tEExb.18827$AX1.7...@news1.tin.it...

Ho provato adesso e con command /c non funziona ma con cmd /c si'
cioe' funziona con NT

 for %a in (pk%n_%) do set ugo=%a & command /c echo %%a%
Nel batch, dove servirebbe, non funzia per via del singolo "%" (risulta 
un "Errore di sintassi" e raddoppiando opportunamente il "%" non accade 
niente in output), allora ho provato a linea comando con le due 
summenzionate righe che hai messo.
Purtroppo niente da fare, risulta un
set ugo=pk1 & command /c echo pk1%
e comunque chiamare un'altra sessione shell non e' una cosa molto 
salutare all'interno del mio batch (e' grosso, circa 30KB con varie 
chiamate-interazioni con tool compilati in c) dove c'e' gia' piu' della 
singola sessione (ma questo tu ovviamente non lo potevi sapere) per 
impostare in avvio l'environment oltre i 256byte di default (insomma una 
ricorsione dell'interprete).
Il for di Charlie sarebbe stata la soluzione piu' idonea, "pulita" e 
"portabile" (perlomeno per come e' impostato il mio batch), peccato che 
non voglia lavorare in un batch.
Vabbe', amen, devo farci una croce sopra e tentare una qualche via di 
compromesso, peccato veramente.
Comunque un grazie a tutti per le interessanti proposte-aiuti.
mark79

 set ugo=pk1 & command /c echo pk1%
Come ti ho detto con cmd invece che command
funziona cosi' come ho scritto

 funziona cosi' come ho scritto
Ho fatto cio' che mi hai gentilmente consigliato prima di scaricare e 
leggere il tuo secondo post con segnalazione che funzionava solo con 
cmd.exe, solo che purtroppo, tra le cose discusse nel mio precedente 
post, c'e' anche la questione che avevo tirato in ballo in apertura di 
thread, ovvero che usavo Win98SE, quindi 
command.com
 (il batch e' stato 
pensato per correre con 
command.com
 anche sotto i win che di default 
hanno cmd.exe, cioe' quelli con kernel nt).
Ciao e arigrazie.
mark79

 monumento), purtroppo pero' non funziona nel file batch.
-----------------------------------------------
@echo off
set n_=1
set pk%n_%=ugo
for %%v in (%n_%) do command /c echo %%pk%%v%%
-----------------------------------------------


 monumento), purtroppo pero' non funziona nel file batch.
--------------------------
set n_=1
set pk%n_%=ugo
command /c echo %%pk%n_%%%
--------------------------


 command /c echo %%pk%n_%%%
Non funziona

 Non funziona
Non direi. Sotto quale sistema operativo l'hai fatto girare?
Ciao e fai sapere!


 (risulta un "Errore di sintassi" e raddoppiando opportunamente il "%"
guarda che cosi' va bene in entrambi i modi
@echo off
set n_=1
set pk%n_%=ugo
for %%v in (%n_%) do command /c echo pk%%v contiene %%pk%%v%%
set |find "PK"
set n_=2
set pk%n_%=pino
for %%v in (pk%n_%) do command /c echo %%v contiene %%%%v%%
set |find "PK"
-- 
-=[]=---iAN CooG/HokutoForce+TWT---=[]=-
00-0000SYSTEM ERROR:  press F13 to continue.

 Ciao e fai sapere!
NT5,cioe' XP

 NT5,cioe' XP
Immaginavo! Il mio batch infatti si riferiva al caso 9x, considerato che
sotto NT il problema è di facile soluzione.
Ciao!
