[BATCH] asignar variables con set desde un for /f[Solucionado]

Iniciado por haveavigar, 12 Enero 2011, 23:14 PM

0 Miembros y 1 Visitante están viendo este tema.

haveavigar

Estoy haciendo esto para bajar galerias de una pagina pero
me trabe en el siguiente script:
Código (dos) [Seleccionar]
@echo off
set /a contador=1
setlocal enabledelayedexpansion
for /f "usebackq eol=- delims=^=>/ tokens=6,12,13,14" %%A in (`find /i "prev.jpg" masdiosas.php@id^=10123`) do (
@echo !contador!=%%A_%%B_%%C_%%D
@set /a contador+=1
)


Este script devuelve esto:
Citar1=17330"_2010_12
2=17320"_2010_12
3=17307"_2010_12
4=17298"_2010_12
5=17287"_2010_11
6=17266"_2010_11
7=17244"_2010_11
8=17225"_2010_11

lo que quiero hacer es que los numeros del uno al ocho sean las variables,
intente asignar poniendo la instruccion
Código (dos) [Seleccionar]
@set !contador!=%%A_%%B_%%C_%%D
adentro del DO pero el set no lo deja poner,
tampoco funciona poner "!contador!"

Bueno, eso es todo, espero puedan ayudarme, saludos.

haveavigar

#1
este codigo devuelve solo la ultima linea
de temp.txt, lo que intento es sacar las comillas despues de los primeros
numeros,
Tengo que usar "setlocal enabledelayedexpansion" y hago referencia a la variable con !variable!, de esa forma no la puedo asignar

Código (dos) [Seleccionar]
for /f "" %%A in (temp.txt) do (
set sacar=%%A
set sacado=%sacar:"=%
@echo %sacado% >> actual.txt
)


este es el txt:
Citar17330",2010/12
17320",2010/12
17307",2010/12
17298",2010/12
17287",2010/11
17266",2010/11
17244",2010/11
17225",2010/11


haveavigar

#2
las variables se borran cuando termina el batch, se puede ver en este script:
Código (dos) [Seleccionar]
@echo off
setlocal enabledelayedexpansion
set /a n = 1
for /L %%i in (1,1,5) do (
set /a contador = !contador! + %%i
if "!contador!"=="4" set cinco=Variablecinco
echo !contador!
)
echo %cinco%



leogtz

#3
Código (dos) [Seleccionar]
@echo off
setlocal enabledelayedexpansion
for /f %%_ in (temp.txt) do (
set "line=%%_";
set line=!line:"=!
echo !line!
)



CitarC:\>type temp.txt
17330",2010/12
17320",2010/12
17307",2010/12
17298",2010/12
17287",2010/11
17266",2010/11
17244",2010/11
17225",2010/11

C:\>code.bat
17330,2010/12
17320,2010/12
17307,2010/12
17298,2010/12
17287,2010/11
17266,2010/11
17244,2010/11
17225,2010/11

C:\>


Para tu primera duda prueba esto:
Código (dos) [Seleccionar]
@echo off

setlocal enabledelayedexpansion
set /a contador=1
for /f "usebackq eol=- delims=^=>/ tokens=6,12,13,14" %%A in (`find /i "prev.jpg" masdiosas.php@id^=10123`) do (
set line_!contador!=%% style^="color: #448888;"^>A_%%B_%%C_%%D
set /a contador+=1
)

set line_


Es imposible ayudarte con la primera duda si no pones el contenido del archivo que estás trabajando y qué es lo que quieres obtener.
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

haveavigar

ah ok, el segundo ejemplo funciona!, yo ponia
en el comando "set" la variable !contador!=...  , sola, sin nada.

gracias por tu respuesta Leo, saludos.
trabajas en algo que tenga que ver con programacion??

leogtz

#5
Cita de: haveavigar
gracias por tu respuesta Leo, saludos.
trabajas en algo que tenga que ver con programacion??


De nada. No, no trabajo de esto, es lo que yo quisiera, trabajar de esto, pero lamentablemente todavía no tengo el placer.

Saludos.
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com