Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Nilrac en 19 Julio 2010, 23:19 pm



Título: Encerrar entre comillas- Batch[Solucionado]
Publicado por: Nilrac en 19 Julio 2010, 23:19 pm
Hola !

Veran, el code funciona en que el usuario debe escribir cualquier cosa en un documento de texto y GUARDARLO, luego es alli donde esta mi duda.

¿Coma hago para encerrar entre comillas cada LINEA que el usuario escriba?

Ejemplo:

El User escribe:

Código:
Hola, me gusta este foro
mi nick es Nilrac

Luego de ejecutar el code me lo devuelva así:

Código:
"Hola, me gusta este foro"
"mi nick es Nilrac"

Gracias


Título: Re: Encerrar entre comillas- Batch
Publicado por: maxx93 en 19 Julio 2010, 23:37 pm
En archivo.txt pones la ruta de tu archivo

Código:
for /f "delims=" %%i in (archivo.txt) do (echo "%%i")

o sino tambien podes poner...
Código:
for /f "delims=" %%i in ('type "archivo.txt"') do (echo "%%i")

Salu2


Título: Re: Encerrar entre comillas- Batch
Publicado por: Nilrac en 20 Julio 2010, 00:22 am
Hola maxx93   ::)

He modificado un poco el code, el problema es que le coloca comillas a la ultima linea y necesito que sean todas las lineas

Código:
for /f "delims=" %%a in ('type "archivo.txt"') do ( echo "%%a" > carlos.txt )



Gracias


Título: Re: Encerrar entre comillas- Batch
Publicado por: maxx93 en 20 Julio 2010, 01:27 am
Aca te corrijo el code...
Código:
@echo off>carlos.txt
for /f "delims=" %%a in ('type "archivo.txt"') do ( echo "%%a" >> carlos.txt )

Te digo el problema estaba en que cuando pones
Código:
> carlos.txt
Estas haciendo que cada linea sea reemplazada por la siguiente, por esto te aparece la ultima linea.
Salu2


Título: Re: Encerrar entre comillas- Batch
Publicado por: Nilrac en 20 Julio 2010, 05:00 am
Perfecto amigo muchas Gracias !

Se me paso por alto ;-)

__________________________

Otra cosa,

Estoy tratando buscar unas palabras en particular en unarchivo de texto y que si las encuentra realize cierta ejecucion.
este es el code:

Código:
IF EXIST ARCHIVO.TXT (
TYPE ARCHIVO.TXT | FINDSTR /R /V /I "HOY" && (
DEL /F /Q ARCHIVO.TXT > NUL
))

lo que sucede es que si está la palabra o no HOY el archivo se elimina. lo que deseo es que si esta que se elimine el archivo de lo contrario no !

Gracias !


Título: Re: Encerrar entre comillas- Batch
Publicado por: DA KILLER en 20 Julio 2010, 06:36 am
if %errorlevel%==0 del /f /q archivo.txt >nul

si no me equivoco sería así


Título: Re: Encerrar entre comillas- Batch
Publicado por: leogtz en 20 Julio 2010, 06:55 am
Perfecto amigo muchas Gracias !

Se me paso por alto ;-)

__________________________

Otra cosa,

Estoy tratando buscar unas palabras en particular en unarchivo de texto y que si las encuentra realize cierta ejecucion.
este es el code:

Código:
IF EXIST ARCHIVO.TXT (
TYPE ARCHIVO.TXT | FINDSTR /R /V /I "HOY" && (
DEL /F /Q ARCHIVO.TXT > NUL
))

lo que sucede es que si está la palabra o no HOY el archivo se elimina. lo que deseo es que si esta que se elimine el archivo de lo contrario no !

Gracias !

Nilrac, tu error está en que no entiendes lo que hace el comando findstr, consulta la opción /v y verás por qué.

Así debería funcionar:
Código
  1. if exist "archivo.txt" (
  2. type "archivo.txt" | findstr /r /i "hoy" && (
  3. del /f /q "archivo.txt"
  4. )
  5. )
Lo que decimos con el código anterior es:
Código:
Si existe el archivo "archivo.txt" entonces:
    -muestro el archivo y si en el archivo aparece la palabra "hoy" entonces:
        -eliminamos el archivo "archivo.txt"


Título: Re: Encerrar entre comillas- Batch
Publicado por: Nilrac en 20 Julio 2010, 17:25 pm

Lo que decimos con el código anterior es:
Código:
Si existe el archivo "archivo.txt" entonces:
    -muestro el archivo y si en el archivo aparece la palabra "hoy" entonces:
        -eliminamos el archivo "archivo.txt"
[/quote]

Excelente interpretacion amigo  ::)

Efectivamente el error estaba en "/v" tengo que ser mas minusioso con mis code  :¬¬, muchas Gracias  ;-)


Título: Re: Encerrar entre comillas- Batch[Solucionado]
Publicado por: Nilrac en 22 Julio 2010, 02:26 am
________________________________________________

Hola !


Necesito un poco mas de ayuda por favor para quitar todas las comillas (") de un .txt y que me envie toda la unformacion restante a otro .txt

Código:
for /f "delims=" %%a in ('type "archivo1.txt"') do ( Echo %%a >> archivo2.txt)

El problema, es que me da error al colocar las comillas al lado de delims


Título: Re: Encerrar entre comillas- Batch[Solucionado]
Publicado por: leogtz en 22 Julio 2010, 17:29 pm
El comando FOR tiene un bug con las comillas, por lo que no podrás usar las dobles comillas como delimitadores.

Lo que podrías hacer es sustituir las dobles comillas por otro caracter en el archivo y enviarlo a un archivo temporal que fácilmente puedas trabajar:
Código
  1. setlocal enabledelayedexpansion
  2. for /f "tokens=*" %%_ in ('type "file.txt"') do (
  3.    set lineContents=%%_
  4.    echo !lineContents:"=,!
  5. )>> "temporal.txt"


Título: Re: Encerrar entre comillas- Batch[Solucionado]
Publicado por: Nilrac en 22 Julio 2010, 18:09 pm
Ultimamente he estado leyendo un tutorial de for, y busque algo sobre las comillas pero no decia absolutamente nada acerca del bug.

Son datos importantes en un proceso de aprendizaje  ;D

Serias tan amable de explicarme:

setlocal enabledelayedexpansion --> ?


Gracias !


Título: Re: Encerrar entre comillas- Batch[Solucionado]
Publicado por: maxx93 en 22 Julio 2010, 18:09 pm
Si lo que quieres es eliminar las comillas y no remplazarlas por nada en vez de usar
Citar
   echo !lineContents:"=,!
parte del code de Leo Gutiérrez.

puedes usar...
Código:
echo !lineContents:"=!

Con respecto a
Código:
setlocal enabledelayedexpansion
lo que hace es habilitar la expansión de la variable de entorno retardada, en el for si usas una variable "comun" digamos que se la toma como unica y no se reemplaza nose como explicarme bien, pero con este code hace que se reemplaze, y para usar este tipo de variable en vez de referirte con %% te referis con !!.

Por ej. Si queres contar las lineas de temporal.txt y usas este code
Código:
set n=0
for /f %%a in (temporal.txt) do (set /a n=%n%+1)
echo %n%
pause>nul
Te devolvera 1 por mas que tengas 999 lineas.
Pero si usas este code
Código:
setlocal enabledelayedexpansion
set n=0
for /f %%a in (temporal.txt) do (set /a n=!n!+1)
echo %n%
pause>nul
Te devolvera la cantidad de lineas.
Salu2.


Título: Re: Encerrar entre comillas- Batch[Solucionado]
Publicado por: Nilrac en 22 Julio 2010, 18:44 pm
Cuando dices

Código:
setlocal enabledelayedexpansion
lo que hace es habilitar la expansión de la variable de entorno retardada

Afecta a la variable "comun" que esta atras o la que sigue ?


---------------------------------------------

Hay alguna manera de quitar las comillas a un archivo de texto en especifico, sin usar for ?, tal vez con un FINDSTR ?

________________________________

Código
  1. setlocal enabledelayedexpansion
  2. for /f "tokens=*" %%_ in ('type "file.txt"') do (
  3.    set lineContents=%%_
  4.    echo !lineContents:"=,!
  5. )>> "temporal.txt"

Por que si al comando de leo le agrego

 
Código
  1. If exist file.txt (
  2. setlocal enabledelayedexpansion
  3. for /f "tokens=*" %%_ in ('type "file.txt"') do (
  4.    set lineContents=%%_
  5.    echo !lineContents:"=,!
  6. )>> "temporal.txt"
  7. )
  8.  
  9. No funciona ?


Título: Re: Encerrar entre comillas- Batch[Solucionado]
Publicado por: maxx93 en 22 Julio 2010, 19:55 pm
Afecta a la variable, al ponerle %% o !! la estas usando de otro modo. Findstr solo busca una cadena en un archivo/s, no creo que pueda usarse para el propósito. A mi ese code modificado me funciona  :-\ Salu2