PDA

View Full Version : [batch]Altro problema con set e for


skeleton
08-09-2009, 16:20
Salve a tutti,
ho un altro problema con un codice batch:

for /F "tokens=* delims=" %%i IN (1.txt) do (call :sp
set q=%%i
echo %q% > 1_cripted.txt
)
:sp
set param=%1
set result=%param: =0%
set result=%result:a=1%
set result=%result:b=2%
set result=%result:c=3%
set result=%result:d=4%
set result=%result:e=5%
set result=%result:f=6%
set result=%result:g=7%
set result=%result:h=8%
set result=%result:i=9%
set result=%result:l=10%
set result=%result:m=11%
set result=%result:n=12%
set result=%result:o=13%
set result=%result:p=14%
set result=%result:q=15%
set result=%result:r=16%
set result=%result:s=17%
set result=%result:t=18%
set result=%result:u=19%
set result=%result:v=20%
set result=%result:z=21%
set result=%result:x=22%
set result=%result:y=23%
set result=%result:y=24%
set result=%result:k=25%
echo %result%
:end

Ho scritto nel codice le prime 4 righe per ovviare al problema con il seguente codice:
for /f "tokens=* delims= " %%i IN ("1.txt") do call :sp "%%i" > 1_cripted.txt
perchè con questo all'interno del file 1_cripted.txt compaiono le virgolette.

Il problema è che all'interno del file tovo solo la frase "ECHO attivo.".

Potete aiutarmi???

zuper
08-09-2009, 16:34
nn ho capito che vuoi fare...
che c'è nel file 1.txt?
che risultato speri di ottenere??

spiega please ;)

skeleton
08-09-2009, 16:46
Sì, scusa se sono stato poco chiaro.

All'interno di 1.txt, c'è un testo.
Vorrei che mi sostituisse ogni carattere con un numero.

Altro probema:muro: se risolvibile: mi legge solo l'ultima riga di testo.

zuper
08-09-2009, 16:53
echo off
del 1_cripted.txt
for /f "tokens=* delims=;" %%i in (1.txt) do call :sp "%%i" >> 1_cripted.txt

:sp
set param=%1
set result=%param: =0%
set result=%result:a=1%
set result=%result:b=2%
set result=%result:c=3%
set result=%result:d=4%
set result=%result:e=5%
set result=%result:f=6%
set result=%result:g=7%
set result=%result:h=8%
set result=%result:i=9%
set result=%result:l=10%
set result=%result:m=11%
set result=%result:n=12%
set result=%result:o=13%
set result=%result:p=14%
set result=%result:q=15%
set result=%result:r=16%
set result=%result:s=17%
set result=%result:t=18%
set result=%result:u=19%
set result=%result:v=20%
set result=%result:z=21%
set result=%result:x=22%
set result=%result:y=23%
set result=%result:y=24%
set result=%result:k=25%
echo %result%
:end

si sono 2 Y
set result=%result:y=23%
set result=%result:y=24%

guarda se ti va bene

zuper
08-09-2009, 16:55
mi legge solo l'ultima riga di testo.

come hai scritto tu

> 1_cripted.txt

non è che ti legge solo l'ultima riga...ma ti sovrascrive ogni volta la riga precedente...devi fare l'append sul file stesso

>> 1_cripted.txt

skeleton
08-09-2009, 16:59
Mi scuso per l'errore.
No, io intedo che mi sostituisce i caratteri solo dell'ultima riga di 1.txt(ad esempio
1.txt = a
b
lui legge solo b che diventa 2)
Comunque le virgoette dentro il file 1_cripted.txt rimangono, mentre io vorrei eliminare proprio quelle.

Ti riporto cosa mi accade:

1.txt = abc def
1_cripted.txt = "1230456" mentre io lo vorrei così 1230456.

Grazie per la tua risposta.

zuper
08-09-2009, 17:25
echo off
del 1_cripted.txt
for /f "tokens=* delims= " %%i in (1.txt) do call :sp "%%i" >> 1_cripted.txt

:sp
set param=%1
set result=%param: =0%
set result=%result:a=1%
set result=%result:b=2%
set result=%result:c=3%
set result=%result:d=4%
set result=%result:e=5%
set result=%result:f=6%
set result=%result:g=7%
set result=%result:h=8%
set result=%result:i=9%
set result=%result:l=10%
set result=%result:m=11%
set result=%result:n=12%
set result=%result:o=13%
set result=%result:p=14%
set result=%result:q=15%
set result=%result:r=16%
set result=%result:s=17%
set result=%result:t=18%
set result=%result:u=19%
set result=%result:v=20%
set result=%result:z=21%
set result=%result:x=22%
set result=%result:y=23%
set result=%result:y=24%
set result=%result:k=25%
set result=%result:"=%
echo %result%
:end

zuper
08-09-2009, 17:26
Mi scuso per l'errore.
No, io intedo che mi sostituisce i caratteri solo dell'ultima riga di 1.txt(ad esempio
1.txt = a
b
lui legge solo b che diventa 2)

no, lui legge a e scrive 1 sul file 1_crypted.
poi legge b e riscrive sopra sul file 1_crypted....

li legge e li riscrive tutti e due....ma lo sovrascrive invece di appenderlo sotto :D

skeleton
08-09-2009, 17:33
Mitico!!! Hai risolto tutto!!!

Grazie tante per il tuo aiuto:winner: :asd: .
:yeah:

skeleton
08-09-2009, 17:55
Scusate, ma ho un altro problema:

for /F "usebackq delims=" %%w IN (1_cripted.txt) do set tot=%%w
set cr=%tot:~1%
set cri=%tot:~-1%
set /a crip=%cr%-%cri%
echo %crip% >> file_cripted_completed.txt

#non capisco che risultati vengono: vorrei che %cr% estraesse il pimo carattere di %tot% e %cri% l'ultimo.
#In oltre vorrei che l'eliminazione di questo carattere venga esegita per ogni riga
es.
01010
02020
diventi non solo
01010
202
ma
101
202


Help me please!!!:ave:

skeleton
15-09-2009, 13:36
up