Script para crear carpetas en múltiples directorios usando la fecha AAAAMMDD como nombre de la carpeta


6

En el trabajo todas las mañanas tengo que crear múltiples carpetas de archivos (usando un YYYYMMDDformato de fecha como el nombre de la carpeta de archivos) en diferentes directorios a través de nuestra red para varios departamentos. Esto es una verdadera pérdida de tiempo y dolor, y me gustaría automatizar el proceso. Entonces mi pregunta es:

¿Alguien sabe cómo puedo escribir un script que use la fecha actual del sistema en YYYYMMDDformato y cree múltiples carpetas en diferentes directorios de red con cada carpeta nombrada como la fecha en YYYYMMDDformato?

Gracias de antemano por sus respuestas.


1
manía: el símbolo del sistema de Windows no es DOS. DOS es un sistema operativo de 16 bits que está mayormente muerto. Volví a etiquetar la pregunta para reflejar eso.
RBerteig

1
Un piloto está volando un avión y se pierde en la niebla. Tiene poco combustible y sus pasajeros están nerviosos. Por fin ve un edificio alto con un chico trabajando en el quinto piso. El piloto se inclina y grita a través de su ventana abierta: "Oye, ¿dónde estoy?". El empleado de la oficina responde: "Estás en un avión". La respuesta que le dio el piloto del edificio fue 100% correcta pero absolutamente inútil. Si bien tiene toda la razón de que el símbolo del sistema no es DOS, es lo que la mayoría de la gente entiende. Mis 2 centavos: debemos centrarnos en hacer que las cosas sean accesibles / buscables, incluso si no están 100% correctamente etiquetadas.
Vinayak

1
@Vinayak Si realmente tuviera una pregunta sobre DOS, ¿le gustaría examinar temas que eran 95% sobre Windows?
coneslayer

Respuestas:


9

Cree un archivo por lotes que se vea así:

@echo off
for /F "tokens=2-4 delims=/ " %%i in ('date /t') do set yyyymmdd=%%k%%j%%i
echo Date: %yyyymmdd%

mkdir \\server1\share1\subdir1\%yyyymmdd%
mkdir \\server1\share2\subdir2\%yyyymmdd%
mkdir \\server2\share3\subdir3\%yyyymmdd%
...

Advertencia : el formato de la fecha ( aaaammdd = %% k %% j %% i ) depende de su configuración regional. Como uso el formato de fecha francés (dd / mm / aaaa), tengo que usar " %% k %% j %% i " como formato (%% i = día, %% j = mes, %% j = año).

Si su configuración regional está configurada en estilo estadounidense (mm / dd / aaaa), debe usar " %% k %% i %% j " (%% i = mes, %% j = día, %% j = año) .


Si desea incluir el tiempo también, use esto:

@echo off
for /F "tokens=2-4 delims=/ " %%i in ('date /t') do set yyyymmdd=%%k%%j%%i
echo Date: %yyyymmdd%
for /F "tokens=1-3 delims=: " %%i in ('echo %time%') do set hhmmss=%%i%%j%%k
echo Time: %hhmmss%

mkdir \\server1\share1\subdir1\%yyyymmdd%%hhmmss%

La fecha se almacena en la variable %yyyymmdd%, la hora en %hhmmss%. El mismo comentario anterior para la fecha, no aplicable para la hora.

Podría usar un separador entre la fecha y la hora: %yyyymmdd%_%hhmmss%por ejemplo.


¿podría mostrar un ejemplo que incluya el tiempo también?
Mark Norgren

1
@marked: actualicé mi respuesta con un ejemplo que incluye el tiempo
Snark

0

Otra forma más fea pero mucho más flexible es generar un archivo por lotes separado para cada directorio que se necesita crear, que (a) crea el directorio y (b) cambia el nombre del siguiente archivo por lotes que debe ejecutarse en un directorio previamente seleccionado nombre común. Simplemente ejecuta un archivo por lotes con ese nombre común todos los días


0

Prueba estas opciones:

set name=%date%
set name2=%name:~6,4%-%name:~3,2%-%name:~0,2%
set tm=%time%
set name3=%tm:~0,2%-%tm:~3,2%
set finname=%name2%_%name3%
mkdir \\Server\Share1\Subfolder1\%finname%

En caso de que quiera hacer lo mismo para todos los días hábiles del mes (por ejemplo, para el mes de mayo de 2018, quiero crear todas las carpetas para el 1 de mayo, luego el 2 de mayo y así sucesivamente - 20180501, 20180502, 20180503 ....) entonces, ¿cómo lo repito ?, cualquier sugerencia es bienvenida.
tush1r
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.