Autor
|
Tema: Crear directorio del mes actual en BAT (Leído 21,153 veces)
|
ferrec
Desconectado
Mensajes: 27
|
Hola, tengo una question que me esta volviendo loco y no encuentro una solucion... a ver si me podeis echar un cable por favor..
Lo que me gustaria hacer es crear un directorio con el mes actual, por ejemplo si estamos en enero, que reconozca que estamos en este mes y genere ese directorio llamado "enero", creo que es algo sencillo pero no se como hacerlo...lo que he podido es hacer directorios con el formato día/mes/año pero no solo con el mes actual.
Muchas gracias
|
|
|
En línea
|
|
|
|
el-brujo
|
Tienes que usar el comando "date"
Ejemplo: @ECHO RESPALDO DE ARCHIVOS REM creamos una variable conteniendo la fecha actual con el formato año-mes-dia SET FOLDER= %date:~6,4%- %date:~3,2%- %date:~0,2% REM Creamos la carpeta donde se guardará la copia de respaldo REM Seteamos las propiedades del comando XCOPY SET BACKUPCMD=XCOPY /S /C /D /E /H /I /R /Y REM Ejecutamos la instrucción %BACKUPCMD% Actual. Backup%FOLDER%
|
|
« Última modificación: 16 Enero 2015, 05:18 am por Eleкtro »
|
En línea
|
|
|
|
ferrec
Desconectado
Mensajes: 27
|
Hola gracias por la respuesta...pero DATE es la fecha completa al crear el directorio se crearia 15/01/2014 y no el mes solamente que es lo que busco.
No se si me he explicado bien, perdonad...
lo que necesito es un bat para que me genere un directorio solamente con el MES actual.
Mil gracias de nuevo por tu respuesta
|
|
|
En línea
|
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.866
|
Hola No es posible obtener el nombre de un mes específico mediante un lenguaje limitado como es Batch, no de forma natural. Puedes hacerlo así: Echo [+] Current Month Is: " %monthName%" :: MKDir ".\%monthName%" :GetMonthName Set "monthNames=Enero Febrero Marzo Abril Mayo Junio Julio Agosto Septiembre Octubre Noviembre Diciembre" Set /A "monthInt= %date:~3,2%" & REM Set For DD/MM/YYYY For /F "Tokens= %monthInt%" %%# in (' Echo %monthNames%' ) do ( )
PD: En cualquier otro lenguaje sería una tarea simple de llevar a cabo, por ejemplo en VBS, otor lenguaje sencillo que podrías usar en vez de Batch. Saludos
|
|
« Última modificación: 16 Enero 2015, 05:44 am por Eleкtro »
|
En línea
|
|
|
|
ferrec
Desconectado
Mensajes: 27
|
gracias Eleкtro, lo he probado como me has puesto pero solo me muestra el mes y no me genera el directorio , no me importa que no sea natural, solo que cuando ejecute el bat si no existe el directorio del mes actual que me lo cree... Una pregunta...es mas sencillo que el bat llame a VB me genere este directorio si no exite y luego continue con el Bat? ...Perdona por mi ignorancia Gracias de nuevo pr tu ayuda
Ya esta solucionado...solamente me preguntaba pero no se porque no me lo generaba... le he quitado el echo que me mostraba el mes y le he dejado el mkdir que cree el directorio... Gracias rem Echo [+] Current Month Is: "%monthName%" :GetMonthName Set "monthNames=Enero Febrero Marzo Abril Mayo Junio Julio Agosto Septiembre Octubre Noviembre Diciembre" Set /A "monthInt= %date:~3,2%" & REM Set For DD/MM/YYYY For /F "Tokens= %monthInt%" %%# in (' Echo %monthNames%' ) do ( )
[MOD]: Está prohibido hacer doble post
|
|
« Última modificación: 16 Enero 2015, 10:33 am por Eleкtro »
|
En línea
|
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.866
|
gracias Eleкtro, lo he probado como me has puesto pero solo me muestra el mes y no me genera el directorio , no me importa que no sea natural, solo que cuando ejecute el bat si no existe el directorio del mes actual que me lo cree... Examina bien el código y verás que no te genera la carpeta porqué añadí una linea de comentario, descoméntala y todo irá bien, de todas formas se supone que deberías saber como se crea una carpeta, eso es lo mínimo si vas a utilizar Batch. EDITO: ya vi que lo modificaste Una pregunta...es mas sencillo que el bat llame a VB me genere este directorio si no exite y luego continue con el Bat? ...Perdona por mi ignorancia Puedes hacer una especie de hibridación en el script para generar el VBS desde Batch y llamarlo y si quieres incluso devolver una respuesta y utilizarla, requiere más código, ya tienes una forma que funciona, úsala, en resumen "es lo mismo", jeje Saludos!
|
|
« Última modificación: 16 Enero 2015, 10:34 am por Eleкtro »
|
En línea
|
|
|
|
ferrec
Desconectado
Mensajes: 27
|
Gracias de nuevo... muy buena ayuda!
|
|
|
En línea
|
|
|
|
elqueteconte
Desconectado
Mensajes: 36
|
Saludos;
Yo tengo que hacer algo parecido pero de la siguiente manera: 1.- El usuario indica (en numeros) el mes. Es decir que hay que validar que solo coloque dos caracteres y que sean numeros entre 01 y 12. 2.- Verificar si la carpeta mes con el año está creada. Ejemplo: Si el usuario indica 09 entonces la carpeta sería Septiembre2015. 3.- Si la carpeta no existe;se crea la carpeta con el mes y el año, ejemplo Septiembre2015 4.- Buscar en el directorio donde se está ejecutando el bath todas las carpetas cuya estructura sea año, mes, dia corresponda al mes de la carpeta que acabo de crear y mover esas carpetas a la que acabo de crear. Ejemplo Si cree la carpeta miruta/Septiembre2015 y en miruta/ hay carpetas 20150901, 20150902 ... hasta 20150930 y moverla a miruta/Septiembre2015
Me podrías orientar en como hacerlo, no tengo ni idea.
Desde ya mil gracias....
|
|
|
En línea
|
|
|
|
Mad Antrax
|
Saludos;
Yo tengo que hacer algo parecido pero de la siguiente manera: 1.- El usuario indica (en numeros) el mes. Es decir que hay que validar que solo coloque dos caracteres y que sean numeros entre 01 y 12. 2.- Verificar si la carpeta mes con el año está creada. Ejemplo: Si el usuario indica 09 entonces la carpeta sería Septiembre2015. 3.- Si la carpeta no existe;se crea la carpeta con el mes y el año, ejemplo Septiembre2015 4.- Buscar en el directorio donde se está ejecutando el bath todas las carpetas cuya estructura sea año, mes, dia corresponda al mes de la carpeta que acabo de crear y mover esas carpetas a la que acabo de crear. Ejemplo Si cree la carpeta miruta/Septiembre2015 y en miruta/ hay carpetas 20150901, 20150902 ... hasta 20150930 y moverla a miruta/Septiembre2015
Me podrías orientar en como hacerlo, no tengo ni idea.
Desde ya mil gracias....
Te ayudo un poquito... lo he programado en VBS en lugar de Bat/Batch, es un lenguaje mucho más sencillo de implementar bajo mi punto de vista: '1.- El usuario indica (en numeros) el mes. Es decir que hay que validar que solo coloque dos caracteres y que sean numeros entre 01 y 12. '2.- Verificar si la carpeta mes con el año está creada. Ejemplo: Si el usuario indica 09 entonces la carpeta sería Septiembre2015. '3.- Si la carpeta no existe;se crea la carpeta con el mes y el año, ejemplo Septiembre2015 '4.- Buscar en el directorio donde se está ejecutando el bath todas las carpetas cuya estructura sea año, mes, dia corresponda al mes de la carpeta que acabo de crear y mover esas carpetas a la que acabo de crear. Ejemplo 'Si cree la carpeta miruta/Septiembre2015 y en miruta/ hay carpetas 20150901, 20150902 ... hasta 20150930 y moverla a miruta/Septiembre2015 Set oFSO = CreateObject("Scripting.FileSystemObject") iMes = InputBox("Introduce el mes: ") If isNumeric(iMes) = False Then While isNumeric(iMes) = False MsgBox "Solo se permiten valores numéricos", vbExclamation + vbOkOnly iMes = InputBox("Introduce el mes: ") Wend End If If iMes < 1 Or iMes > 12 Then While iMes < 1 Or iMes > 12 MsgBox "Solo se permiten valores numéricos entre 1 y 12", vbExclamation + vbOkOnly iMes = InputBox("Introduce el mes: ") Wend End If Select Case iMes Case 1 sMes = "Enero" Case 2 sMes = "Febrero" Case 3 sMes = "Marzo" Case 4 sMes = "Abril" Case 5 sMes = "Mayo" Case 6 sMes = "Junio" Case 7 sMes = "Julio" Case 8 sMes = "Agosto" Case 9 sMes = "Septiembre" Case 10 sMes = "Octubre" Case 11 sMes = "Noviembre" Case 12 sMes = "Diciembre" End Select sFolder = sMes & Year(Now) If oFSO.FolderExists(sFolder) = True Then MsgBox "La carpeta " & sFolder & " ya existe", vbInformation + vbOkOnly Else MsgBox "La carpeta " & sFolder & " no existe", vbInformation + vbOkOnly oFSO.CreateFolder(sFolder) End If
Verás que el punto (4) no lo he programado, te lo dejo para ti con el objeto oFSO podrás hacerlo sin problemas. Si tienes dudas pregunta, pero dale un poco al coco
|
|
|
En línea
|
No hago hacks/cheats para juegos Online. Tampoco ayudo a nadie a realizar hacks/cheats para juegos Online.
|
|
|
elqueteconte
Desconectado
Mensajes: 36
|
Me haz dejado loco jajajajaja.
Gracias mil.
Pensé en hacerlo en VB.net.
Voy a darle por allí a ver que logro.
Te podré contactar por este hilo o abro uno nuevo?
|
|
|
En línea
|
|
|
|
|
|