Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: kakaroto6 en 5 Abril 2016, 16:37 pm



Título: Crear un bat para crear archivos txt
Publicado por: kakaroto6 en 5 Abril 2016, 16:37 pm
Hola, estoy usando el programa TumblrOne (para bajar imagenes de un tumblr)
y quiero borrar las fotos, pero que no las descargue de nuevo, el programa solo lee nombre, no mira la extension, y claramente, omite las que ya estan bajadas.

Mi tarea es crear un .bat que convierta todos los archivos de una carpeta en un .txt en blanco, (ya que no quiero que ocupen espacio), de momento he conseguido que lo copie, pero el archivo generado pesa igual que la imagen.

alguien sabe algo para esto?


Título: Re: Crear un bat para crear archivos txt
Publicado por: engel lex en 5 Abril 2016, 20:41 pm
seria bueno que indicaras tu sistema operativo

para linux y mac es
Código:
echo "" > *.txt
y te los deja en blanco (sin contenido)... no se si para otros SO


Título: Re: Crear un bat para crear archivos txt
Publicado por: Shell Root en 5 Abril 2016, 20:47 pm
seria bueno que indicaras tu sistema operativo

para linux y mac es
Código:
echo "" > *.txt
y te los deja en blanco (sin contenido)... no se si para otros SO

.BAT: En DOS, OS/2 y Microsoft Windows, un archivo batch es un archivo de procesamiento por lotes. Se trata de archivos de texto sin formato, guardados con la extensión .BAT que contienen un conjunto de instrucciones MS-DOS.


Título: Re: Crear un bat para crear archivos txt
Publicado por: kakaroto6 en 5 Abril 2016, 20:58 pm
Exacto, siento no especificar, tengo windows 10.


Título: Re: Crear un bat para crear archivos txt
Publicado por: engel lex en 5 Abril 2016, 21:14 pm
.Alex. cierto, no vi lo de .bat

creo que elektro es quien te podría decir con exactitud como es en ese caso, creo va algo así

Código:
FOR /D %%p IN ("carpeta") DO copy /b NUL "%%p" /s /q

o es igual que en bash... intenta ambas cosas XD

si no puedes intentar buscar por "empty all files in a folder" o algo así


Título: Re: Crear un bat para crear archivos txt
Publicado por: Zomkar en 5 Abril 2016, 22:08 pm
El problema es que FOR /D recorre directorios, no archivos dentro de un directorio.

Mi propuesta:
Código:
@echo off
pushd "ruta carpeta"
FOR /F "tokens=* delims=" %%p IN ('dir /B "ruta carpeta"') DO copy /y nul "%%p"
popd

utilizo pushd y popd porque sino el comando especificado en el for se aplica a la carpeta de ejecucion del bat, y no la especificada en el for. además, si tuviesemos el bat en la carpeta el mismo comando intentaría eliminarlo.


Título: Re: Crear un bat para crear archivos txt
Publicado por: kakaroto6 en 6 Abril 2016, 00:21 am
El problema es que FOR /D recorre directorios, no archivos dentro de un directorio.

Mi propuesta:
Código:
@echo off
pushd "ruta carpeta"
FOR /F "tokens=* delims=" %%p IN ('dir /B "ruta carpeta"') DO copy /y nul "%%p"
popd

utilizo pushd y popd porque sino el comando especificado en el for se aplica a la carpeta de ejecucion del bat, y no la especificada en el for. además, si tuviesemos el bat en la carpeta el mismo comando intentaría eliminarlo.



Gracias, justo lo que queria.


Título: Re: Crear un bat para crear archivos txt
Publicado por: Eleкtro en 30 Abril 2016, 13:39 pm
Se puede hacer con un simple búcle For evitando el uso del comando Dir para aumentar el rendimiento general del script disminuyendo el tiempo total necesario de ejecución (al evitar el inicio de dicho comando, esperar la señal de salida, y filtrar la salida en al variabe de For).
Dependiendo de las circunstancias (la cantidad de archivos) la diferencia puede ser ínfima, o considerable, pero sea como sea hay que seguir buenas prácticas de uso evitando instrucciones innecesarias:

Código
  1. @Echo OFF
  2.  
  3. Call :MakeNullFiles "C:\Directory" "png"
  4. Pause&Exit /B 0
  5.  
  6. :MakeNullFiles :: %1=Directory path; %2=File extension.
  7. If Not Exist "%~1" (
  8. GoTo:EOF
  9. ) Else (
  10. PushD "%~1"
  11. (For %%# In ("*.%~2") Do (
  12. Copy /Y Nul "%%~f#")
  13. )1>Nul
  14. GoTo:EOF
  15. )

Saludos.