Título: Crear directorio del mes actual en BAT Publicado por: ferrec en 15 Enero 2015, 16:43 pm 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 Título: Re: Crear directorio del mes actual en BAT Publicado por: el-brujo en 15 Enero 2015, 17:16 pm Tienes que usar el comando "date"
Código
Ejemplo: Código
Título: Re: Crear directorio del mes actual en BAT Publicado por: ferrec en 15 Enero 2015, 18:05 pm 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 Título: Re: Crear directorio del mes actual en BAT Publicado por: Eleкtro en 16 Enero 2015, 05:38 am 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í: Código 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 Título: Re: Crear directorio del mes actual en BAT Publicado por: ferrec en 16 Enero 2015, 10:22 am 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 ;-) Código [MOD]: Está prohibido hacer doble post Título: Re: Crear directorio del mes actual en BAT Publicado por: Eleкtro en 16 Enero 2015, 10:31 am 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 :P 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! Título: Re: Crear directorio del mes actual en BAT Publicado por: ferrec en 16 Enero 2015, 10:42 am Gracias de nuevo... muy buena ayuda! ;D
Título: Re: Crear directorio del mes actual en BAT Publicado por: elqueteconte en 9 Octubre 2015, 16:37 pm 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.... Título: Re: Crear directorio del mes actual en BAT Publicado por: Mad Antrax en 9 Octubre 2015, 17:05 pm 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: Código
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 :) Título: Re: Crear directorio del mes actual en BAT Publicado por: elqueteconte en 9 Octubre 2015, 17:17 pm 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? Título: Re: Crear directorio del mes actual en BAT Publicado por: Mad Antrax en 9 Octubre 2015, 17:26 pm 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? Utiliza éste Mi codigo es VBS, copia y pega todo el codigo en un "bloc de notas" (notepad) y guarda el contenido con el nombre que desees, pero asegúrate de guardarlo con la extensión .vbs al final. Le das doble-click y lo pruebas. Verás que he implementado las opciones 1, 2 y 3. Falta la 4 que es un poco más compleja. Necesitarás saber el formato de nombres EXACTO que se utiliza en las carpetas existentes, hacer un Mid() para leer la posición del mes en el nombre, comparar y luego llamar a la función CopyFolder o MoveFolder del objeto oFSO Si tienes dudas pregunta por aquí mismo Título: Re: Crear directorio del mes actual en BAT Publicado por: elqueteconte en 9 Octubre 2015, 23:24 pm Saludos Mad;
Gracias mil de nuevo, me puse a investigar y encontré el vbsedit que es un editor para vbs y funciona al pelo. Te confieso que no soy programador nato así que me estoy rompiendo el coco para ver como logro llevar el concepto al código. Pues estoy claro en lo que necesito pero no se como aplicarlo, googleando encontré este script: Código: Dim fso, folder, subFlds, fld, s Pero cuando se ejecuta la instrucción Código: Set folder = fso.GetFolder(path) Teoricamente este me lista las carpetas que estan al mismo nivel de donde se está ejecutando el script, luego de esto debo mover las carpetas hacia la carpeta creada. El asunto es que las carpetas a mover deben corresponder al mes de la carpeta que se creo. De pana que mil gracias por la ayuda hermano... Título: Re: Crear directorio del mes actual en BAT Publicado por: Mad Antrax en 9 Octubre 2015, 23:29 pm Te veo perdido jejeje, pero al menos veo que te has buscado las castañas y no vas mal encaminado.
Estoy en una partida de league of legends, dame 30 minutos y te respondo con el codigo correcto Título: Re: Crear directorio del mes actual en BAT Publicado por: elqueteconte en 9 Octubre 2015, 23:48 pm Perdido no perdidisimo jajajajajaja.
Se lo necesito, lo que no se es como hacerlo.... Gracias pana.... Título: Re: Crear directorio del mes actual en BAT Publicado por: Mad Antrax en 10 Octubre 2015, 00:44 am 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? Aquí lo tienes Código
Funciona si la estructura de carpetas es "AÑO MES DIA", por ejemplo: 20150327 El Script, después de introducir 3 (marzo) te moverá las carpetas cuyo nombre sea xxxx03xx dentro de Marzo2015 Lee las líneas, se entienden solas. Título: Re: Crear directorio del mes actual en BAT Publicado por: Eleкtro en 10 Octubre 2015, 04:56 am Pensé en hacerlo en VB.net. El código del compañero @Mad Antrax está muy pero que muy bien, sin embargo, al escucharte decir eso me han entrado ganas de mostrarte un ejemplo alternativo e iguálmente funcional en dicho lenguaje, ya que igual que tengo bien sabido que @Mad Antrax ama VBS, yo amo Vb.Net :P. Si lo hicieras en .Net (VB.Net o C#) la eficacia general del código aumentaria considerablemente en comparación con un lenguaje de scripting limitado (sobre todo si hablamos de Batch), aunque en realidad, con VBS tienes más que suficiente para llevar a cabo esa tarea. Aquí tienes el archivo de la solución de Visual Studio 2013, como ya he mencionado cumple todas las funciones que has pedido, eso sí, lo que quieras añadir o modificar ya es cosa tuya. Si tienes preguntas sobre este lenguaje por favor hazlas en el subforo correspondiente, no desviemos más el tema aquí. (http://i.imgur.com/7Jbay2L.png) http://www.mediafire.com/download/4qoklj8s64jwuvv/WindowsApplication6.rar Y aquí te muestro parte del código fuente. El resto del código que no muestro aquí simplemente es el código generado automaticamente por VS, el código de la UI. Por mencionar algo de este código que te puede interesar rehutilizable para el futuro, en la función GetMonthName utilizo un objeto de globalización , CultureInfo, del cual obtengo de forma administrada los nombres de los meses en la cultura específica, en este caso "es-ES". Te lo he dejado todo con varios comentarios para que te ayuden a comprender lo que hago. MainForm.vb Código
+ DateUtil.vb Código
Que lo apreveches. Saludos! Título: Re: Crear directorio del mes actual en BAT Publicado por: Mad Antrax en 10 Octubre 2015, 18:13 pm jajaj, te saliste Eleкtro ;-)
Sí, yo adoro VBS, hoy en día es el único lenguaje que utilizo de forma profesional en el trabajo y la verdad me permite resolver todos los problemas y necesidades que se me plantean en el trabajo. Tu script en .net es awesome y mas elaborado con el control de errores y permisos, en definitiva; una pasada de codigo. Un saludo jefe ;D Título: Re: Crear directorio del mes actual en BAT Publicado por: elqueteconte en 13 Octubre 2015, 16:53 pm ;-) ;-) ;-) ;-) ;-)
Son lo maximo chicos.... Mil gracias, yo tengo un libro de VB.Net me voy a poner a aprender pues este proceso no terminar aquí; hasta ahora han trabajado en el entorno lo que viene es la fusión de los archivos txt que están en cada carpeta. Miren este archivo .bat copy /y blancos\*.TXT . copy CM.txt + C:\carp1\Emp1\20150908\CM.txt CM.txt copy GL.txt + C:\carp1\Emp1\20150908\GL.txt GL.txt copy IMP6000.txt + C:\carp1\Emp1\20150908\IMP6000.txt IMP6000.txt copy IMP6001.txt + C:\carp1\Emp1\20150908\IMP6001.txt IMP6001.txt copy IMP6002.txt + C:\carp1\Emp1\20150908\IMP6002.txt IMP6002.txt copy IMP6003.txt + C:\carp1\Emp1\20150908\IMP6003.txt IMP6003.txt copy CM.txt + C:\carp1\Emp1\20150909\CM.txt CM.txt copy GL.txt + C:\carp1\Emp1\20150909\GL.txt GL.txt copy IMP6000.txt + C:\carp1\Emp1\20150909\IMP6000.txt IMP6000.txt copy IMP6001.txt + C:\carp1\Emp1\20150909\IMP6001.txt IMP6001.txt copy IMP6002.txt + C:\carp1\Emp1\20150909\IMP6002.txt IMP6002.txt copy IMP6003.txt + C:\carp1\Emp1\20150909\IMP6003.txt IMP6003.txt copy CM.txt + C:\carp1\Emp1\20150910\CM.txt CM.txt copy GL.txt + C:\carp1\Emp1\20150910\GL.txt GL.txt copy IMP6000.txt + C:\carp1\Emp1\20150910\IMP6000.txt IMP6000.txt copy IMP6001.txt + C:\carp1\Emp1\20150910\IMP6001.txt IMP6001.txt copy IMP6002.txt + C:\carp1\Emp1\20150910\IMP6002.txt IMP6002.txt copy IMP6003.txt + C:\carp1\Emp1\20150910\IMP6003.txt IMP6003.txt copy CM.txt + C:\carp1\Emp1\20150911\CM.txt CM.txt copy GL.txt + C:\carp1\Emp1\20150911\GL.txt GL.txt copy IMP6000.txt + C:\carp1\Emp1\20150911\IMP6000.txt IMP6000.txt copy IMP6001.txt + C:\carp1\Emp1\20150911\IMP6001.txt IMP6001.txt copy IMP6002.txt + C:\carp1\Emp1\20150911\IMP6002.txt IMP6002.txt copy IMP6003.txt + C:\carp1\Emp1\20150911\IMP6003.txt IMP6003.txt copy CM.txt + C:\carp1\Emp1\20150912\CM.txt CM.txt copy GL.txt + C:\carp1\Emp1\20150912\GL.txt GL.txt copy IMP6000.txt + C:\carp1\Emp1\20150912\IMP6000.txt IMP6000.txt copy IMP6001.txt + C:\carp1\Emp1\20150912\IMP6001.txt IMP6001.txt copy IMP6002.txt + C:\carp1\Emp1\20150912\IMP6002.txt IMP6002.txt copy IMP6003.txt + C:\carp1\Emp1\20150912\IMP6003.txt IMP6003.txt Fijense que el .bat hace un recorrido por cada carpeta y copia los archivos que estén en esta dentro de otr archivo con el mismo nombre que se encuentra en el nivel superior, es decir, si la carpeta ppal se llama Octubre2015 el proceso hace un recorrido por las carpetas desde la 20151001 hasta 2015610N (donde N es el último día del mes) y crea los archivos a fusionados. El proceso de fusión de los archivos hace que los mismos contengan dentro un caracter especial que indica el fin de cada archivo, este caracter es como una fecla apuntando a la izquierda; la idea es que despues que el proceso de merge esté completado hay que entrar en cada archivo y limpiarlos. Sería mucho pedir esto? De pana que muchisimas gracias chicos, son lo maximo. Título: Re: Crear directorio del mes actual en BAT Publicado por: Mad Antrax en 13 Octubre 2015, 17:32 pm No he entendido nada xD
Título: Re: Crear directorio del mes actual en BAT Publicado por: Eleкtro en 13 Octubre 2015, 18:19 pm El proceso de fusión de los archivos hace que los mismos contengan dentro un caracter especial que indica el fin de cada archivo, este caracter es como una fecla apuntando a la izquierda Eso lo puedes solucionar realizando una copia en modo binario: Cita de: CMD.exe copy /? Copia uno o más archivos en otra ubicación. /A Indica un archivo de texto ASCII. /B Indica un archivo binario. De todas formas, permíteme una pregunta... si puedes manejarte con VB.Net o con VBS, ¿por qué utilizas Batch?, al menos para merger o fusionar archivos, con lo fácil y "limpio" que es en los lenguajes mencionados no tendrias problemas de ese tipo. Saludos! Título: Re: Crear directorio del mes actual en BAT Publicado por: elqueteconte en 13 Octubre 2015, 21:46 pm Saludos chicos de nuevo gracias por el apoyo y mil disculpas por la joda;
Les explico paso a paso: 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 YA TODO ESTO ESTA 5.- Luego de haber movido las carpetas al direcotorio el script entra en la carpeta del día 1 y copia la información sobre otro archivo y sí susesivamente hasta el ultimo día. Esto hará que al final el archivo resultante tendra la información de todos los días. Yo supongo que el script entra en un for desde el primer día hasta el ultimo y dentro del for estaría la sentencia de comiando. Sería algo así: Para dia=1 hasta dia=31 copiar en archivoA plantilla la información del archivoA copiar en archivoB plantilla la información del archivoB Fin para 6.- Buscar caracter especial en los archivos CM.txt; GL.txt; IMP6000.txt;IMP6001.txt; IMP6002.txt y IMP6003.txt y eliminarlo. 7.- Cerrar archivos. Me da pena con ustedes mi pana; pero la programación no es mi fuerte; trabajo en el área de tecgonologia a nivel de administración de recursos pero he adquirido una nueva responsabilidad y pues me toca tirar codigo, pero este script es urgente que lo haga. Sin mas; elqueteconte Título: Re: Crear directorio del mes actual en BAT Publicado por: elqueteconte en 14 Octubre 2015, 00:03 am Eso lo puedes solucionar realizando una copia en modo binario: De todas formas, permíteme una pregunta... si puedes manejarte con VB.Net o con VBS, ¿por qué utilizas Batch?, al menos para merger o fusionar archivos, con lo fácil y "limpio" que es en los lenguajes mencionados no tendrias problemas de ese tipo. Saludos! Saludos Alektro; Gracias oir tu tiempo. Yo manejo .bath pues cuando comencé con el proceso de integración, uno de los pasos era el usar este script el cual tenía que editar cada vez que hubiesen mas días por agregar, es por ello que vez en el script como se repite el mismo comando y solo cambia el día, claro cada vez que agregas un día el comando copy se repite 6 veces. De nuevo quiero expresarte mi agradecimiento por el apoyo. Ya estoy bajando el Visual Studio Express para ver y estudiar el código. Sin mas, elqueteconte Título: Re: Crear directorio del mes actual en BAT Publicado por: elqueteconte en 14 Octubre 2015, 17:30 pm Eso lo puedes solucionar realizando una copia en modo binario: De todas formas, permíteme una pregunta... si puedes manejarte con VB.Net o con VBS, ¿por qué utilizas Batch?, al menos para merger o fusionar archivos, con lo fácil y "limpio" que es en los lenguajes mencionados no tendrias problemas de ese tipo. Saludos! Estoy investigando de como leer las carpetas que se movieron y luego copiar su contenido. Inicialmente tendría que entrar en carpeta por carpeta para copiar los archivos, claro como el número de carpetas puede variar entonces tendría que manejarlo con un for y luego que entre en cada carpeta hacer el copy la función sería mas o menos así: Código
Que opinas? Como lo integro con tu código? Gracias mil de nuevo. Título: Re: Crear directorio del mes actual en BAT Publicado por: Eleкtro en 19 Octubre 2015, 14:43 pm ¿Y esto lleva aquí desde el 13 de octubre? xD lo siento por la tardanza, luego le doy un repaso y te comento.
saludos EDITO: Prueba de la siguiente manera, pero no se muy bien como tienes la estructura de carpetas y archivos así que tal vez tengas que cambiar los parámetros de la iteración de carpetas y/o archivos. Lo he escrito al vuelo sin testearlo (es un coñazo volver a recrear la estructura de archivos y carpetas). De todas formas creo que este ejemplo te servirá para que lo consigas hacer por ti mismo. Código
Modo de empleo en el código fuente que compartí en la página anterior: Código
Título: Re: Crear directorio del mes actual en BAT Publicado por: elqueteconte en 19 Octubre 2015, 15:13 pm Dale mi pana.
Gracias mil de nuevo.... Título: Re: Crear directorio del mes actual en BAT Publicado por: elqueteconte en 19 Octubre 2015, 16:33 pm Saludos mi pana,
Estoy testeando la función y al principio me estaba dando error pues no hacía el merge de los archivos, entraba en cada carpeta, leia los archivos pero no entraba aqui: Código: If Not String.IsNullOrEmpty(curFilename) Then El problema era que cuando hacía la comparación de los nombres de los archivos con las constantes: Código: If txtfile.Name.Equals(NameCM, StringComparison.OrdinalIgnoreCase) Then La comparación no se daba pues el nombre del archivo es CM.TXT y no CM como estaba definido en las contantes; así que modifiqué esa porción del codigo y voilà funcona la función reune todos los archivos en uno solo. Así quedó la porción final Código: Const NameCM As String = "CM.TXT" Pero ahora me está dando este error: An unhandled exception of type 'System.IO.IOException' occurred in mscorlib.dll Additional information: The process cannot access the file 'C:\Users\liderapp\Documents\Scripts\Octubre2015\CM.TXT' because it is being used by another process. Eso sucede justo aqui: Código: File.AppendAllText(Path.Combine(topDir.FullName, curFilename), sr.ReadToEnd, Encoding.Default) Cuando ya ha hecho el barrido de todas las carpetas. Se debe a que el archivo ya está abierto y entonces al intentar abrirlo de nuevo da el error? Gracias mil por el apoyo mi pana. Título: Re: Crear directorio del mes actual en BAT Publicado por: elqueteconte en 21 Octubre 2015, 14:09 pm Saludos mi pana, Estoy testeando la función y al principio me estaba dando error pues no hacía el merge de los archivos, entraba en cada carpeta, leia los archivos pero no entraba aqui: Código: If Not String.IsNullOrEmpty(curFilename) Then El problema era que cuando hacía la comparación de los nombres de los archivos con las constantes: Código: If txtfile.Name.Equals(NameCM, StringComparison.OrdinalIgnoreCase) Then La comparación no se daba pues el nombre del archivo es CM.TXT y no CM como estaba definido en las contantes; así que modifiqué esa porción del codigo y voilà funcona la función reune todos los archivos en uno solo. Así quedó la porción final Código: Const NameCM As String = "CM.TXT" Pero ahora me está dando este error: An unhandled exception of type 'System.IO.IOException' occurred in mscorlib.dll Additional information: The process cannot access the file 'C:\Users\liderapp\Documents\Scripts\Octubre2015\CM.TXT' because it is being used by another process. Eso sucede justo aqui: Código: File.AppendAllText(Path.Combine(topDir.FullName, curFilename), sr.ReadToEnd, Encoding.Default) Cuando ya ha hecho el barrido de todas las carpetas. Se debe a que el archivo ya está abierto y entonces al intentar abrirlo de nuevo da el error? Gracias mil por el apoyo mi pana. Investigando un poco en la nube; me sugieren que use este comando: Código: Using loFileStream As System.IO.FileStream = New FileStream(lcFile, FileMode.Create) Q opinas al respecto? Como lo adapto a nuestro script? Sin mas, Tu pana agradecido... jejejejejeje Título: Re: Crear directorio del mes actual en BAT Publicado por: Eleкtro en 23 Octubre 2015, 10:22 am me está dando este error: An unhandled exception of type 'System.IO.IOException' occurred in mscorlib.dll Additional information: The process cannot access the file 'C:\Users\liderapp\Documents\Scripts\Octubre2015\CM.TXT' because it is being used by another process. Eso sucede justo aqui: Código: File.AppendAllText(Path.Combine(topDir.FullName, curFilename), sr.ReadToEnd, Encoding.Default) Cuando ya ha hecho el barrido de todas las carpetas. Se debe a que el archivo ya está abierto y entonces al intentar abrirlo de nuevo da el error? Exactamente se debe a eso que has deducido. El archivo "...\topdir\xxx.txt" se procesa de forma inesperada en la iteración, es decir, se abre el archivo en modo lectura pero se intentan guardar/adjuntar datos en modo escritura. Esto sucede por que como escribí el código al vuelo cometí un pequeño fallo en esta linea: Citar Código
Modifica topDir por subDir Lo siento por ese pequeño descuido. Con esa amodificación ya debería funcionarte como es esperado. Investigando un poco en la nube; me sugieren que use este comando: Código: Using loFileStream As System.IO.FileStream = New FileStream(lcFile, FileMode.Create) Q opinas al respecto? Como lo adapto a nuestro script? Una vez hayas corregido el fallo que comenté entonces no hay necesidad de hacer nada más. Aparte, en el código que has mostrado lo apropiado sería manejar la accesibilidad de un objeto StreamWriter para manipular texto, ya que un FileStream se utiliza más bien para escribir secuencias de bytes (y entonces tendrías que obtener los bytes del texto que quieres añadir), es completamente innecesario un FileStream en este escenario, además, le estás pasando el flag FileMode.Create el cual sobreescribirá el archivo en cada iteración que hagas, en lugar de adjuntar texto al archivo que ya estaba creado. De todas formas te muestro como sería la adaptación de un FileStream, pero como ya digo es completamente innecesario: Código
Prueba el siguiente código. Lo he refactorizado bastante. Código
NOTA: SI TE SURGEN MÁS DUDAS SOBRE VB.NET POR FAVOR CREA UN POST EN LA SECCIÓN DEDICADA A LA PLATAFORMA .NET http://foro.elhacker.net/net-b62.0/ Saludos Título: Re: Crear directorio del mes actual en BAT Publicado por: elqueteconte en 23 Octubre 2015, 14:54 pm Liiiisto...!
Hermano eres un duro en .net te felicito.... Mil gracias; ahora me toca ir a otra fase de este proyecto esto es apenas el comienzo, espero poder seguir con tu apoyo. Dale creare los hilos en el foro que corresponde. Gracias mil de nuevo mi pana. Un abrazo y feliz fín de semana. Título: Re: Crear directorio del mes actual en BAT Publicado por: Eleкtro en 5 Agosto 2016, 11:58 am Hola
- Está prohibido revivir temas antiguos. - Es obligatorio formatear un bloque de código, ¡esto es un foro de programación! Sigue las normas, por favor. Tema Cerrado Saludos |