Autor
		 | 
		
			Tema: Ayuda con BAT leer Archivo  (Leído 27,618 veces)
		 | 
	 
 
	
		
			
				
					
						
							elecktra
							
								
								  Desconectado
								Mensajes: 120
								
								
								
								
								
								  
							 
						 | 
						
							
							 
							
Hola, comoe stan, les cuento mi problema, tengo desarrollado un codigo que me lee nombre de archivos TXT y envia un mail, el nobre del archivo suele tener el siguiente formato 2_00411_080601_080630.TXT yo solo necesito loq ue se encuentra del segundo "_" para atras, entonces lo leia con una variable %n3:~-13%, con ese codigo solo leia los 13 caracteres finales sin al extensión. el problema es que ahora tengo una modificacion, algunco TXT se le pueden agregar de 1 a 4 letras al final. Pero si pongo %n3:~-17% y el archivo tinen 15 acaracteres me toma otros valores. resumiendo como logro leer desde el segundo "_" para atras sin importar la cantidad. Espero me puedan ayudar, gracias. 
  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
									« Última modificación: 24 Septiembre 2009, 18:31 pm por Leo Gutierrez. »
								 | 
								
									 
									En línea
								 | 
							  
							 
							
						 | 
					 
				 
			 |  
		 
	 |  
	
		
		
			
				
					
						
							leogtz
							
								. . .. ... ..... ........ ............. ..................... 
								Colaborador
								    
								  Desconectado
								Mensajes: 3.069
								
								 
								/^$/
								
								
								
								
								
								  
								 
							 
						 | 
						
							
							 
							
Pon un poco del contenido del archivo y lo que has intentado. 
  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									En línea
								 | 
							  
							 
							
						 | 
					 
				 
			 |  
		 
	 |  
	
		
		
			
				
					
						
							elecktra
							
								
								  Desconectado
								Mensajes: 120
								
								
								
								
								
								  
							 
						 | 
						
							
							 
							
Pero amigo ya fui calro, tengo archivos de texto con el siguiente formato:
  2_00411_080601_080630.TXT 
  Yo necesito leer el nombre de archivo sin extensión apartir del segundo "_" osea en este caso necesitaria 080601_080630
  pero el problema es que aveces el archivo puede ser mas largo ejemplo.
  2_00411_080601_080630HL.TXT ó 2_00411_080601_080630POTE.TXT   
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									En línea
								 | 
							  
							 
							
						 | 
					 
				 
			 |  
		 
	 |  
	
		
		
			
				
					
						
							leogtz
							
								. . .. ... ..... ........ ............. ..................... 
								Colaborador
								    
								  Desconectado
								Mensajes: 3.069
								
								 
								/^$/
								
								
								
								
								
								  
								 
							 
						 | 
						
							
							 
							
C:\>type file.txt 2_00411_080601_080630.TXT 2_00411_080601_080630HL.TXT 2_00411_080601_080630POTE.TXT C:\>code.bat 080630 080630HL 080630POTE
  C:\> for /f "tokens=4 delims=_"  %%a in (file.txt ) do ( ) 
 
 C:\>type "file.txt" | for /f "tokens=4 delims=_" %a in (file.txt) do @echo %a 080630.TXT 080630HL.TXT 080630POTE.TXT
  C:\>  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
									« Última modificación: 24 Septiembre 2009, 18:36 pm por Leo Gutierrez. »
								 | 
								
									 
									En línea
								 | 
							  
							 
							
						 | 
					 
				 
			 |  
		 
	 |  
	
		
		
			
				
					
						
							elecktra
							
								
								  Desconectado
								Mensajes: 120
								
								
								
								
								
								  
							 
						 | 
						
							
							 
							
No logro hacerlo funcionar, mira te muestro el pedazop de codigo que tengo yo. for %%a in (C:\ICR\DATA\?_*_*_*.txt) do ( for /f "tokens=1,2 delims=_" %%b in ("%%a") do ( for /f "tokens=* delims=0" %%d in ("%%c") do (call :comando %%a %%b %%d) ) ) goto :eof
  :comando set n0=%~1 set n1=%~nx2 set n2=%~3 set n3=%~n1 Ese codigo me busca lso archivos de texto en el directorio,  me gustaria reemplazar el set n3=%~n1 por lo que te pido arriba. gracias.  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									En línea
								 | 
							  
							 
							
						 | 
					 
				 
			 |  
		 
	 |  
	
		
		
			
				
					
						
							leogtz
							
								. . .. ... ..... ........ ............. ..................... 
								Colaborador
								    
								  Desconectado
								Mensajes: 3.069
								
								 
								/^$/
								
								
								
								
								
								  
								 
							 
						 | 
						
							
							 
							
A ver, es que no te has explicado bien, ¿un sólo archivo de texto contiene todos los nombres de archivo? o diferentes archivos? En caso de que sean diferentes archivos, ejemplo, tengo los siguientes archivos que contienen nombres de archivos: C:\>type *.txt
  file.txt
 
  2_00411_080601_080630.TXT 2_00411_080601_080630HL.TXT 2_00411_080601_080630POTE.TXT file2.txt
 
  2_00411_080601_080630.TXT 2_00411_080601_080630HL.TXT 2_00411_080601_080630POTE.TXT file3.txt
 
  2_00411_080601_080630.TXT 2_00411_080601_080630HL.TXT 2_00411_080601_080630POTE.TXT file4.txt
 
  2_00411_080601_080630.TXT 2_00411_080601_080630HL.TXT 2_00411_080601_080630POTE.TXT C:\> Con un código así podrías conseguirlo: @echo off for %%_ in (*.txt) do ( for /f "tokens=4 delims=_" %%a in (%%_) do ( echo %%~na ) ) Salida: C:\>code.bat 080630 080630HL 080630POTE 080630 080630HL 080630POTE 080630 080630HL 080630POTE  080630 080630HL 080630POTE
  C:\> Es decir, se procesan todos los archivos de texto del directorio actual y se extrae lo que quieres.  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
									« Última modificación: 24 Septiembre 2009, 22:03 pm por Leo Gutierrez. »
								 | 
								
									 
									En línea
								 | 
							  
							 
							
						 | 
					 
				 
			 |  
		 
	 |  
	
		
		
			
				
					
						
							elecktra
							
								
								  Desconectado
								Mensajes: 120
								
								
								
								
								
								  
							 
						 | 
						
							
							 
							
Es verdad disculpame, se me olvido aclarar ese detalle, el BAt revisa en un directorio todos lso txt, pero solo el nombre de archivo, o el contenido y nesecito extraer lo que se encuentra detras del segundo "_" ejemplo:
  2_00411_080601_080630POTE.TXT
  Con el codgido que me dejaste arriba puedo hacerlo, porque po lo qeu veo, lee una parte sola del nombre. 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									En línea
								 | 
							  
							 
							
						 | 
					 
				 
			 |  
		 
	 |  
	
		
		
			
				
					
						
							elecktra
							
								
								  Desconectado
								Mensajes: 120
								
								
								
								
								
								  
							 
						 | 
						
							
							 
							
Bue amigo aqui te dejo el codigo que armado anteriormente con un poco de la ayuda de ustedes. miralo y te exoplico cual es la modificacionq ue quiero realizar ahora. @echo off title Encolador Automatico Uso especial en CDRA color 4f ECHO -------------------------------------------------------------------------- echo ENCOLADOR AUTOMATICO ICR xxxxx  ECHO -------------------------------------------------------------------------- echo.  echo.
  rem --Crea los directorios "Procesados, 1, 2, 3, Registros"-- echo Creando Directorios de Respaldo echo. IF NOT EXIST c:\ICR\DATA\Procesados MKDIR c:\ICR\DATA\Procesados IF NOT EXIST c:\ICR\DATA\Procesados\1 MKDIR c:\ICR\DATA\Procesados\1 IF NOT EXIST c:\ICR\DATA\Procesados\2 MKDIR c:\ICR\DATA\Procesados\2 IF NOT EXIST c:\ICR\DATA\Procesados\3 MKDIR c:\ICR\DATA\Procesados\3 IF NOT EXIST c:\ICR\DATA\Procesados\Registros MKDIR c:\ICR\DATA\Procesados\Registros cls
  rem --Crea en la carpeta "ICR" un Script que borra los txt con un mes de antiguedad-- rem --EL SCRIPT BORRA DESDE LA CARPETA "PROCESADOS" TODAS LAS SUBCARPETAS QUE ENCUENTRE DENTRO. echo Creando Script de VBS echo ^set objshell = createobject("wscript.shell") >> delfull.vbs echo objshell.run "cmd /c dir C:\ICR\DATA\Procesados /s /b > temp.txt",vbhide >> delfull.vbs echo wscript.sleep 2000 >> delfull.vbs echo ^set objfso = createobject("scripting.filesystemobject") >> delfull.vbs echo ^set temp = objfso.opentextfile("temp.txt",1) >> delfull.vbs echo do until temp.atendofstream >> delfull.vbs echo fi = temp.readline >> delfull.vbs echo if objfso.fileexists(fi) = true then >> delfull.vbs echo if objfso.getfile(fi).parentfolder.name ^<^> Registros then >> delfull.vbs echo if datediff("m",objfso.getfile(fi).datecreated,now()) ^>= 1 then >> delfull.vbs echo objfso.deletefile(objfso.getfile(fi).path) >> delfull.vbs echo end if >> delfull.vbs echo end if >> delfull.vbs echo end if >> delfull.vbs echo loop >> delfull.vbs echo temp.close >> delfull.vbs
  rem --Este codigo ejecuta el Script creado en la carpeta-- start /wait delfull.vbs
  rem --Borra el Script de la carpeta-- del delfull.vbs
  rem --Esto borra el txt creado por el script VBS-- del temp.txt
  rem --Busca los txt del directorio "\DATA\", segun la empresa y la sucursal genera el codigo y lo ejecuta-- echo Se cargaran los Archivos y se Realizara el Backup echo. for %%a in (C:\ICR\DATA\?_*_*_*.txt) do ( for /f "tokens=1,2 delims=_" %%b in ("%%a") do ( for /f "tokens=* delims=0" %%d in ("%%c") do (call :comando %%a %%b %%d) ) ) goto :eof
  :comando set n0=%~1 set n1=%~nx2 set n2=%~3 set n3=%~n1 C:\ICR\DATA\encolador.exe N %n0% Tabla:Entrada %n1% %n2% N sa sa CDRA-BAS BASCDR rem --Comprueba si existen las carpetas de empresa y sucursal segun los archivos que encuentre y crea las carpetas-- IF NOT EXIST c:\ICR\DATA\Procesados\%n1%\%n2% MKDIR c:\ICR\DATA\Procesados\%n1%\%n2% rem --Copia cada archivo txt a su carpeta que corrsponda de empresa y sucursal-- copy /y %n0% "c:\ICR\DATA\Procesados\%n1%\%n2%\" rem --Elimina los txt del directorio "\DATA\"-- del /q %n0% rem --Genera un archivo txt en la carpeta "\Registros\" con los comando que creo y ejecuto el BAT-- echo EMPRESA: %n1% SUCURSAL: %n2% PERIODO: %n3:~-13% >>%SYSTEMDRIVE%\ICR\DATA\Procesados\Registros\%date:~0,2%-%date:~3,2%-%date:~6,4%-%time:~0,2%.%time:~3,2%.txt Como pueden ver esta sección: echo EMPRESA: %n1% SUCURSAL: %n2% PERIODO: %n3:~-13% >>%SYSTEMDRIVE%\ICR\DATA\Procesados\Registros\%date:~0,2%-%date:~3,2%-%date:~6,4%-%time:~0,2%.%time:~3,2%.txt exporto un archivo de txt de registro, dentro del mismo me guarda partes de los archivos encontrados en el directorio, pero necesito que el PERIODO: ya no sea %n3:~-13%, osea que no me guarde los ultimo 13 caracteres si no todo los que hay desde el segundo "_" hasta la extensión (sin incluir esta). ejemplo: 2_00411_ 080601_080630POTE.TXT 1_00411_ 080601_080630EE.TXT La verdad no logro hacerlo. Espero me puedan ayudar. Gracias. Nota del mod:he corregido las etiquetas 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
									« Última modificación: 27 Marzo 2011, 19:19 pm por elecktra »
								 | 
								
									 
									En línea
								 | 
							  
							 
							
						 | 
					 
				 
			 |  
		 
	 |  
	
		
		
			
				
					
						
							leogtz
							
								. . .. ... ..... ........ ............. ..................... 
								Colaborador
								    
								  Desconectado
								Mensajes: 3.069
								
								 
								/^$/
								
								
								
								
								
								  
								 
							 
						 | 
						
							
							 
							
Pero es que ya te he explicado y dejado el codigo que hace exactamente lo que quieres. No tienes por que usar extraccion de caracteres, con saber usar un poco de for y los tokens, con eso puedes. http://foro.portalhacker.net/index.php/topic,86033.0.html http://foro.elhacker.net/scripting/acciones_sobre_archivos_de_texto_batch-t242748.0.html  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									En línea
								 | 
							  
							 
							
						 | 
					 
				 
			 |  
		 
	 |  
	
		
		
			
				
					
						
							elecktra
							
								
								  Desconectado
								Mensajes: 120
								
								
								
								
								
								  
							 
						 | 
						
							
							 
							
Si amigo, te lo agradezco, pero nos e como modificar mi codigo con el tuyo, eso es lo que nos e hacer, gracias. 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									En línea
								 | 
							  
							 
							
						 | 
					 
				 
			 |  
		 
	 |  
	 |  
 
	 
	
 
			 
			
				
					
						| Mensajes similares | 
					 
					
						 | 
						Asunto | 
						Iniciado por | 
						Respuestas | 
						Vistas | 
						Último mensaje | 
					 
					
						
							 
						 | 
						
							 
						 | 
						
							AYUDA CON BAT, LEER NOMBRE DE ARCHIVO...
							 
							Scripting
						 | 
						
							elecktra
						 | 
						
							3
						 | 
						
							3,460
						 | 
						
							 
							
								28 Noviembre 2008, 00:56 am 
								por Darioxhcx
							
						 | 
					 
					
						
							 
						 | 
						
							 
						 | 
						
							Ayuda a leer y modificar Bytes de un Archivo
							 
							.NET (C#, VB.NET, ASP)
						 | 
						
							adan-2994
						 | 
						
							4
						 | 
						
							6,881
						 | 
						
							 
							
								 7 Agosto 2011, 02:52 am 
								por adan-2994
							
						 | 
					 
					
						
							 
						 | 
						
							 
						 | 
						
							Ayuda - Leer Varios Datos en un Archivo Txt
							 
							Programación C/C++
						 | 
						
							alejandrosevenfold
						 | 
						
							2
						 | 
						
							3,542
						 | 
						
							 
							
								20 Septiembre 2012, 22:39 pm 
								por alejandrosevenfold
							
						 | 
					 
					
						
							 
						 | 
						
							 
						 | 
						
							Ayuda al leer archivo
							 
							Programación C/C++
						 | 
						
							mnd00003
						 | 
						
							1
						 | 
						
							2,446
						 | 
						
							 
							
								13 Octubre 2014, 18:13 pm 
								por rir3760
							
						 | 
					 
					
						
							 
						 | 
						
							 
						 | 
						
							ayuda con mi codigo, leer de un archivo en c
							 
							Programación C/C++
						 | 
						
							yeah_2796
						 | 
						
							0
						 | 
						
							2,098
						 | 
						
							 
							
								28 Mayo 2015, 23:17 pm 
								por yeah_2796
							
						 | 
					 
				 
			    |