Crear un bat para crear archivos txt

Iniciado por kakaroto6, 5 Abril 2016, 16:37 PM

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

kakaroto6

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?

engel lex

seria bueno que indicaras tu sistema operativo

para linux y mac es
echo "" > *.txt
y te los deja en blanco (sin contenido)... no se si para otros SO
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

Shell Root

Cita de: engel lex en  5 Abril 2016, 20:41 PM
seria bueno que indicaras tu sistema operativo

para linux y mac es
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.
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

kakaroto6

Exacto, siento no especificar, tengo windows 10.

engel lex

.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í

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í
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

Zomkar

El problema es que FOR /D recorre directorios, no archivos dentro de un directorio.

Mi propuesta:
@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.
Si vas a por ellos te llamarán violento.
Si explotas a cientos te verán como un ejemplo.

kakaroto6

Cita de: Zomkar en  5 Abril 2016, 22:08 PM
El problema es que FOR /D recorre directorios, no archivos dentro de un directorio.

Mi propuesta:
@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.

Eleкtro

#7
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 (DOS) [Seleccionar]
@Echo OFF

Call :MakeNullFiles "C:\Directory" "png"
Pause&Exit /B 0

:MakeNullFiles :: %1=Directory path; %2=File extension.
If Not Exist "%~1" (
GoTo:EOF
) Else (
PushD "%~1"
(For %%# In ("*.%~2") Do (
Copy /Y Nul "%%~f#")
)1>Nul
PopD
GoTo:EOF
)


Saludos.