Página 1 de 1

AYUDA, Necesito obtener los nombres de muchos archivos txt

Publicado: 20 Oct 2015, 10:15
por smjars
Hola a todos.

Ayudenme por favor

Tengo muchos archivos txt, y quiero obtener solo los nombres y meterlos en una variable.
ejemplo:

tengo un archivo llamado MontosAgosto2015.txt
yo necesito algo que me saque solo el nombre del archivo
$x = MontosAgosto2015
para meter el nombre de muchos archivos en un un solo .txt
no crean que quiero que me hagan el script.
solo necesito saber como le saco los nombres a los archivos sin la extencion ni ubicación.
Ayuda Por Favor :smt022 , solo eso necesito.

Re: AYUDA, Necesito obtener los nombres de muchos archivos t

Publicado: 20 Oct 2015, 21:01
por Dany
Ahi te dejo un ejemplo.

Código: Seleccionar todo

#include <File.au3>
#include <MsgBoxConstants.au3>
#include <Array.au3>

_CreateRamdomFiles("\Directorio-de-Prueba") ;Solo para crear una carpeta con archivos aleatorios

Listtxt();esta es la parte que te importa mira dentro de la funcion

Func Listtxt()

	Local $aFileList = _FileListToArray(@ScriptDir & "\Directorio-de-Prueba", "*.txt")
	If @error = 1 Then
		MsgBox($MB_SYSTEMMODAL, "", "Path was invalid.")
		Exit
	EndIf
	If @error = 4 Then
		MsgBox($MB_SYSTEMMODAL, "", "No file(s) were found.")
		Exit
	EndIf
	_ArrayDisplay($aFileList, "Con la extension")
	;Esta es la parte importante para mostrar solo los nombres
	For $i = 1 To $aFileList[0]
		$aFileList[$i] = StringMid($aFileList[$i], 1, StringInStr($aFileList[$i], ".txt") - 1)
	Next
	_ArrayDisplay($aFileList, "Sin la extension")
EndFunc   ;==>Listtxt



;Solo para crear Un directorio con archivos aleatorios
Func _CreateRamdomFiles($sDir, $Etentions = ".txt|.exe|.doc|.com|.html", $nFiles = 100)
	Local $aExt = StringSplit($Etentions, "|")
	DirCreate(@ScriptDir & $sDir)
	For $i = 1 To $nFiles
		ConsoleWrite(@ScriptDir & $sDir & "\" & RandomName() & $aExt[Random(1, $aExt[0], 1)] & @CRLF)
		FileWrite(@ScriptDir & $sDir & "\" & RandomName() & $aExt[Random(1, $aExt[0], 1)], @ScriptDir & $sDir & "\" & RandomName() & $aExt[Random(1, $aExt[0], 1)])
	Next
EndFunc   ;==>_CreateRamdomFiles

;para crear nombres aleatorios
Func RandomName()
	Local $cadena = ""
	$cadena = Chr(Random(65, 90, 1))
	For $i = 1 To 6
		$cadena &= Random(0, 9, 1)
	Next
	$cadena &= Chr(Random(97, 122, 1))
	Return $cadena
EndFunc   ;==>RandomName
Saludos

Re: AYUDA, Necesito obtener los nombres de muchos archivos t

Publicado: 21 Oct 2015, 19:28
por smjars
Muchas gracias dany, de verdad te lo agredezco :smt041 .

el ejemplo que me pusiste, me va ayudar a hacer de mejor manera lo que quiero, ademas eso de crear archivos random tampoco lo sabia.

De verdad estoy emocionado con el potencial de autoit y me alegra tener apoyo en el foro para ir descubriendo mas funciones :smt023 .

Mi gran problema es el Ingles, y que muchas veces me cuesta entender los ejemplos de la ayuda de autoit.

ayer logre hacer lo de los nombres con esto:

#include <Array.au3>
#include <File.au3>

$aBusquedadearchivos = FileFindFirstFile("*.*")

While 1
$aBusquedadearchivos = FileFindNextFile("*.*")

Local $sUnidad = "", $sDirecciontotal = "", $sNombredelarchivo = "", $sExtencion = ""
Local $aPathSplit = _PathSplit($aBusquedadearchivos, $Unidad, $sDirecciontotal, $sNombredelarchivo, $sExtencion)
_ArrayDisplay($aPathSplit, "_PathSplit de " & $aBusquedadearchivos)
WEnd

y luego con con $aPathSplit[3] conseguí solo el nombre.

Gracias por ejemplo, me quedo mas claro que el agua y me servirá mucho :smt039 .

Re: AYUDA, Necesito obtener los nombres de muchos archivos t

Publicado: 21 Oct 2015, 21:37
por Dany
Hola. Ahí te corregí el ejemplo que muestras.

Código: Seleccionar todo

#include <Array.au3>
#include <File.au3>


Local $sRuta = "C:\"
Local $ahBusqueda = FileFindFirstFile($sRuta & "*.*")
Local $aPathSplit = 0
Local $sUnidad = "", $sDirecciontotal = "", $sNombredelarchivo = "", $sExtencion = ""
While 1
	$aBusquedadearchivos = FileFindNextFile($ahBusqueda)
	If @error Then ExitLoop
	$aBusquedadearchivos = $sRuta & $aBusquedadearchivos
	$aPathSplit = _PathSplit($aBusquedadearchivos, $sUnidad, $sDirecciontotal, $sNombredelarchivo, $sExtencion)
	_ArrayDisplay($aPathSplit, "_PathSplit de " & $aBusquedadearchivos)
WEnd
Saludos

Re: AYUDA, Necesito obtener los nombres de muchos archivos t

Publicado: 22 Oct 2015, 07:59
por smjars
Mucha Gracias Dany, me sirve mucho esa corrección, necesito hacer las cosas ordenadas como tu y también tengo mas claros los bucles y simplificarme la vida metiendo cadenas en variables cortitas.

Estoy de verdad emocionado con autoit, intente aprender a programar con php pero me aburro rapido, autoit es tan bonito que voy aprendiendo sin darme cuenta, eso de manejar matrices era japones para mi.

Gracias por el apoyo.

Re: AYUDA, Necesito obtener los nombres de muchos archivos t

Publicado: 29 Nov 2015, 14:11
por AMFC
Por si sirve de ayuda, me gustaría aportar esto...


La función: _FileListToArrayRec() permite ajustar mas aún lo que se debe buscar. Tan solo hay que darle como parámetros Dónde y Qué queremos buscar y nos devuelve en una matriz de datos (array) todo lo que encuentra.

En el ejemplo os muestro cómo buscar en el directorio raiz de C:\ y todos sus subdirectorios (carpetas), pero excluyendo: \Windows , todos los ficheros de extensión ".txt"

Código: Seleccionar todo

; EJEMPLO *************************************************************************************************
#include <Array.au3>
#include <File.au3>

; Preparando la busqueda
$Directorio="C:\"
$Mascara="*.txt||Windows" ; ficheros a buscar...  todos los .TXT||Excluir el SubDirectorio Windowss.
$iReturn=1     ; Qué Buscar...  0=Todo 1=solo Ficheros  2=solo Directorios  +4=Sin Ocultos  +8=Sin deSistema  +16=Sin Links
$iRecur=1      ; Mirar en...  0=Sin Subcarpetas  1=Todas las Subcarpetas  -3=Solo las Subcarpetas del 3 nivel
$iSort=0       ; Reordenar la salida...  0=No  1=Si
$iReturnPath=1 ; Dato de salida...  0=Solo Nombre  1=Desde el Path dado  2=Path y Nombre completos

; lanzar la busqueda
$ENCONTRADOS =_FileListToArrayRec($Directorio,$Mascara,$iReturn,$iRecur,$iSort,$iReturnPath)

; Ver el resultado
_ArrayDisplay($ENCONTRADOS,"ENCONTRADO en "&$Directorio)
Espero que el ejemplo quede claro.
Saludos

Re: AYUDA, Necesito obtener los nombres de muchos archivos t

Publicado: 29 Nov 2015, 22:30
por smjars
Muchas Gracias AMFC, hay funciones que se pueden personalizar más de lo que yo sabia. En este momento estoy full metido con autoit y mysql, tal vez en países como España, Saber autoit no es nada, pero aquí en Honduras, Hice un script para ayudar a mi jefe con varias tareas que necesita estar revisando, y se las puse todas en una interfaz super simple, y me quedo viendo como hubiere visto a Bill Gates nacer.

Gracias por tu aporte, y compartir conocimiento.

Re: AYUDA, Necesito obtener los nombres de muchos archivos t

Publicado: 08 Dic 2015, 15:08
por AMFC
Me alegra haberte sido de ayuda.

Yo también uso AUTOIT para facilitar el trabajo y me entusiasma ver que "la globalización" permite buscar ayuda entre muchas mas personas. Hace años cuando tenía una duda echaba mano de libros caros y escasos, que al final no solían resolver el problema concreto.
Aplaudo este foro y a personas como CHEFITO que hacen una labor magnífica de compartir conocimiento.

Saludos.

Re: AYUDA, Necesito obtener los nombres de muchos archivos t

Publicado: 08 Dic 2015, 19:35
por Chefito
Muchas gracias. Da gusto saber que todo lo que respondo y lo que explico les enseña y soluciona cosas a otras personas :smt023 .

Sigo intentando participar siempre que puedo, pero por varios motivos no puedo. Además, hay gente nueva (o no tan nueva) que sabe mucho más que yo y os ayudará, como dany :smt024 . Y por supuesto estáis todos vosotros que os apoyáis unos a otros.

Respecto al tema de la utilidad de autoit....es muy útil, pero en mi caso apenas lo utilizo. Es como casi siempre ha sido para mi la programación, un hobby :smt024 .

Seguir así.

Saludos.