¿Es posible hacer una lectura de cadena en MS-DOS?

Tengo una duda que espero pueda ayudarme en resolver. Ahora le platico mi necesidad.
Requiero crear unas carpetas por medio de la programación BATCH cada cierto tiempo, crear un *.bat o *. Cmd el cual el usuario corra para crear las carpetas cuando este lo desee o programarlo en una tarea para que se haga cada determinado tiempo.
A estas carpetas se les asignaría el nombre dinámicamente, es decir tomarán el nombre de la carpeta según los archivos que existan.
Por ejemplo:
Tengo 6 archivos llamados: 122451.txt 122462.txt 134032.txt 134069.txt 145800.txt 145810.txt
Y necesito moverlos a 3 carpetas las cuales tomarán por nombre los primeros 4 caracteres del nombre del archivo, en este caso los nombres de carpeta serían 1224, 1340 y 1458.
¿Es posible hacer una lectura de cadena (en este caso del nombre) y guardarla en una variable para poder crear las carpetas dinámicamente?

1 respuesta

Respuesta
1
Unas aclaraciones:
1 - ¿Dónde se quieren ubicar las carpetas a crear?
2 - Para todos los archivos de la carpeta en cuestión se creará una nueva carpeta a la que se moverá al menos uno de estos archivos, ¿es así?
En principio no me parece que haya problema pero ahora estoy un poco apurado de tiempo y todavía no te puedo pasar la solución.
Saludos,
GGG
Al final no tengo que hacer ahora lo que tenía previsto y he podido estudiar un poco el asunto.
Suponiendo que las carpetas se crean en la carpeta desde la que se ejecuta el BAT (no debe estar ahí el propio BAT porque también sería movido) esto haría lo que interpreto que necesitas:
@ECHO off
REM Crea carpetas con 4 primeros caracteres y mueve archivos
FOR /F "tokens=*" %%A IN ('dir /B /A-d') DO (call :crear "%%A")
GOTO :FIN
:crear
SET carpeta=%1
SET carpeta=%carpeta:~1,4%
IF NOT EXIST %carpeta% (
ECHO Se crea la carpeta %carpeta%
MD %carpeta%
ECHO Se mueven los archivos
COPY %carpeta%*.* %carpeta%\%carpeta%*.*
DEL %carpeta%*.*
)
GOTO :EOF
:FIN
Por supuesto puedes suprimir las líneas con ECHO (son solo para que se sepa lo que está haciendo).
Solo tienes que copiar lo anterior y guardarlo en un archivo BAT o CMD que situarás en una carpeta distinta de aquella desde la que vas a ejecutarlo.
Si tienes algún problema (tal vez haya que situarse previamente desde el propio BAT en la carpeta de trabajo) dímelo y lo analizamos.
Saludos,
GGG
Que tal, disculpa la demora en mi respuesta, me encontraba fuera de mi ciudad y no había podido checar lo que me recomiendas, lo revisaré y te daré mis comentarios.
De cualquier manera agradezco tu pronta respuesta.
Seguimos en contacto.
Saludos.
JDInsane
No hay problema, aunque empezaba a extrañarme el no tener ninguna respuesta.
Aquí estaré.
Saludos,
GGG

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas