elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Como obtener nombres de archivos en una carpeta y agregarlos a un array | PS
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Como obtener nombres de archivos en una carpeta y agregarlos a un array | PS  (Leído 3,607 veces)
cat26

Desconectado Desconectado

Mensajes: 10


Ver Perfil
Como obtener nombres de archivos en una carpeta y agregarlos a un array | PS
« en: 5 Septiembre 2019, 09:32 am »

Hola, alguien me puede ayudar?
Estoy en POWERSHELL

Necesito guardar el nombre y extension de archivos alojados en una ruta especifica y que se guarden en un array para despues trabajar con esos nombres

Intente esto
Código
  1. ::obtengo el numero de archivos en la carpeta
  2. $numero_archivos = (Get-ChildItem C:\l).Count;
  3. ::son 16 archivos asi que me devuelve 16
  4.  
  5. ::creamos un array list
  6. $array_list_nombres = New-Object System.Collections.ArrayList
  7. ::lleno el array list
  8. for ($x=1; $x -le $numero_archivos; $x++) {
  9.    $array_list_nombres.Add((Get-ChildItem -Path C:\l))
  10. }
  11. ::Aqui el error: cuando obtengo el valor de cada posicion  del array list me devuelve todos los nombres que obtuvo en un solo registro
  12. ::por lo que no me sirve por que solo quiero me me devuelva el nombre de un archivo por registro de array list
  13. :: osea asi quiero que me los llene:
  14. ::array_list_nombres[0] = archivo1.xml
  15. ::array_list_nombres[1] = archivo2.xml
  16. ::array_list_nombres[2] = archivo3.xml
  17. :: y asi hasta llenar los 16 registros en el array, para como les comentaba usar esos nombres en otro proceso
  18.  


Gracias y saludos



« Última modificación: 5 Septiembre 2019, 09:33 am por cat26 » En línea

EdePC
Moderador Global
***
Desconectado Desconectado

Mensajes: 2.067



Ver Perfil
Re: Como obtener nombres de archivos en una carpeta y agregarlos a un array | PS
« Respuesta #1 en: 5 Septiembre 2019, 18:27 pm »

Saludos,

- En PowerShell todo son objetos, y estos proveen mucha funcionalidad, supongo que tienes motivos para usar un ArrayList de .NET ...

Código
  1. $array_list_nombres = New-Object System.Collections.ArrayList
  2.  
  3. $archivos = Get-ChildItem -Path "C:\Users\EdSon\Desktop" -File -Name
  4.  
  5. $archivos | Where-Object {$array_list_nombres.Add($_)}
  6.  
  7. Clear-Host
  8.  
  9. Write-Host $array_list_nombres[0]
  10. Write-Host $array_list_nombres[2]
  11. Write-Host $array_list_nombres[6]

- Jeje, me parece escuchar las quejas de PowerShell: "Somos Objetos, trátanos como tal"

- En caso de PowerShell puro basta con:

Código
  1. Get-ChildItem -Path "C:\Users\EdSon\Desktop" -File -Name | Where-Object { Write-Host "Hola, soy: $_" }

Citar
PS C:\Users\EdSon>Get-ChildItem -Path "C:\Users\EdSon\Desktop" -File -Name | Where-Object { Write-Host "Hola, soy: $_" }
Hola, soy: 2
Hola, soy: 8.jpg
Hola, soy: AnyDesk.exe
Hola, soy: cheatsheet-a5.pdf
Hola, soy: cmd_xp.exe
Hola, soy: dm
Hola, soy: dokumen.site_seguridad-informatica-enidocx.pdf
Hola, soy: e-books.lnk
Hola, soy: exiftool(-k).exe
Hola, soy: ffmpeg-GIF.cmd
Hola, soy: ffmpeg-palettegen.cmd
Hola, soy: GIF Movie Gear.lnk
Hola, soy: HTML2BBCode.html
Hola, soy: IrfanView 64.lnk
Hola, soy: jasperreports-ultimate-guide-3v2_0.pdf
Hola, soy: JS2BBCode.html
Hola, soy: pingo.exe
Hola, soy: python-3.7.4-amd64.exe
Hola, soy: python-3.7.4-embed-amd64.zip
Hola, soy: python374.chm
Hola, soy: ScreenToGif.exe
Hola, soy: Solution 5 – Check device partition and osdevice p
Hola, soy: SoulseekQt-2019-7-22-64bit.exe
Hola, soy: SplitString.java
Hola, soy: VirtualDub.lnk
Hola, soy: Windows7 Shortcuts eBook.zip

PS C:\Users\EdSon>


En línea

cat26

Desconectado Desconectado

Mensajes: 10


Ver Perfil
Re: Como obtener nombres de archivos en una carpeta y agregarlos a un array | PS
« Respuesta #2 en: 6 Septiembre 2019, 06:34 am »

Muchas gracias por contestar
probé el código y me sigue repitiendo no se si es error de mi for o que, emmm o no se si no me di a entender

este es el codigo que llevo
Código
  1. ::OBTENEMOS LA CANTIDAD DE ARCHIVOS EN LA RUTA
  2. $numero_archivos = (Get-ChildItem C:\l).Count;
  3. ::son 16 archivos asi que me devuelve 16
  4.  
  5. ::DECLARAMOS EL ARRAY LIST
  6. $array_list_nombres = New-Object System.Collections.ArrayList
  7.  
  8. ::ASIGNAMOS LA RUTA A UNA VARIABLE
  9. $archivos = Get-ChildItem -Path "C:\l" -File -Name
  10.  
  11. ::GUARDAMOS EN EL ARRAY LIST
  12. $archivos | Where-Object {$array_list_nombres.Add($_)}
  13.  
  14. ::CREAMOS  UN ARAY LIST Y CREAMOS VARIABLES
  15. $array_list_variables = New-Object System.Collections.ArrayList
  16. for ($x=1; $x -le $numero_archivos; $x++) {
  17.    $array_list_variables.Add("`$Ruta$x")
  18. }
  19. ::JUNTO LOS 2 ARREGLOS
  20. for ($n=0; $n -le ($numero_archivos -1); $n++) {
  21. $array_list_variables[$n]+" ="+" C:/l/"+"$array_list_nombres[$x]"
  22. }
  23. ::ME SIGUE DEVOLVIENDO TODA LA LISTA DE LOS ARCHIVOS EXISTENTES EN UN SOLO REGISTRO, COMO LO MUESTRO EN LA CAPTURA
  24. ::DE ABAJO,  PERO CUANDO LO PONGO SOLITO EN PS $array_list_nombres[0] SI ME DEVUELVE UN SOLO NOMBRE PERO CUANDO LO PONGO EN EL FOR ME SALE TODA LA LISTA
  25.  

Como quiero que quede es asi: http://prntscr.com/p2h8ke
Como es que sale: http://prntscr.com/p2ha15
En línea

EdePC
Moderador Global
***
Desconectado Desconectado

Mensajes: 2.067



Ver Perfil
Re: Como obtener nombres de archivos en una carpeta y agregarlos a un array | PS
« Respuesta #3 en: 7 Septiembre 2019, 01:02 am »

- Tus Array de .NET no son Objetos de PowerShell, estos se tratan de diferente manera, por ejemplo no puedes usar comillas en ellos porque esto es propio de Objetos PowerShell:


Mal:
Citar
"$array_list_nombres[$x]"

Esto me funciona a mí:
Citar
# Especifico el Path
$path = "C:\Users\EdSon\Desktop\"

# OBTENEMOS LA CANTIDAD DE ARCHIVOS EN LA RUTA (-File => Solo Archivos, no carpetas)
$numero_archivos = (Get-ChildItem -Path "$path" -File).Count;
 
# DECLARAMOS EL ARRAY LIST
$array_list_nombres = New-Object System.Collections.ArrayList
 
# ASIGNAMOS LA RUTA A UNA VARIABLE
$archivos = Get-ChildItem -Path "$path" -File -Name
 
# GUARDAMOS EN EL ARRAY LIST
$archivos | Where-Object {$array_list_nombres.Add($_)}
 
# CREAMOS UN ARRAY LIST Y CREAMOS VARIABLES
$array_list_variables = New-Object System.Collections.ArrayList
for ($x=1; $x -le $numero_archivos; $x++) {
    $array_list_variables.Add("`$Ruta$x")
}
# Limpio pantalla y JUNTO LOS 2 ARREGLOS
Clear-Host
for ($n=0; $n -le ($numero_archivos -1); $n++) {
   $array_list_variables[$n] + " = " + "$path" + $array_list_nombres[$n]
}

Citar
$Ruta1 = C:\Users\EdSon\Desktop\8.jpg
$Ruta2 = C:\Users\EdSon\Desktop\AnyDesk.exe
$Ruta3 = C:\Users\EdSon\Desktop\cheatsheet-a5.pdf
$Ruta4 = C:\Users\EdSon\Desktop\cmd_xp.exe
$Ruta5 = C:\Users\EdSon\Desktop\dm
$Ruta6 = C:\Users\EdSon\Desktop\dokumen.site_seguridad-informatica-enidocx.pdf
$Ruta7 = C:\Users\EdSon\Desktop\e-books.lnk
$Ruta8 = C:\Users\EdSon\Desktop\exiftool(-k).exe
$Ruta9 = C:\Users\EdSon\Desktop\FFmpeg Basics ebook.txt
$Ruta10 = C:\Users\EdSon\Desktop\FFmpeg Basics Multimedia handling with a fast audio and video encoder.pdf
$Ruta11 = C:\Users\EdSon\Desktop\ffmpeg-20190826-0821bc4-win32-static.zip
$Ruta12 = C:\Users\EdSon\Desktop\ffmpeg-20190826-0821bc4-win64-static.zip
$Ruta13 = C:\Users\EdSon\Desktop\ffmpeg-GIF.cmd
$Ruta14 = C:\Users\EdSon\Desktop\ffmpeg-palettegen.cmd
$Ruta15 = C:\Users\EdSon\Desktop\GIF Movie Gear.lnk
$Ruta16 = C:\Users\EdSon\Desktop\HTML2BBCode.html
$Ruta17 = C:\Users\EdSon\Desktop\IrfanView 64.lnk
$Ruta18 = C:\Users\EdSon\Desktop\jasperreports-ultimate-guide-3v2_0.pdf
$Ruta19 = C:\Users\EdSon\Desktop\Java_hklm.reg
$Ruta20 = C:\Users\EdSon\Desktop\JS2BBCode.html
$Ruta21 = C:\Users\EdSon\Desktop\Licensing.cnt
$Ruta22 = C:\Users\EdSon\Desktop\Manual.txt
$Ruta23 = C:\Users\EdSon\Desktop\pingo.exe
$Ruta24 = C:\Users\EdSon\Desktop\ProductLicensing.log
$Ruta25 = C:\Users\EdSon\Desktop\python-3.7.4-amd64.exe
$Ruta26 = C:\Users\EdSon\Desktop\python-3.7.4-embed-amd64.zip
$Ruta27 = C:\Users\EdSon\Desktop\python374.chm
$Ruta28 = C:\Users\EdSon\Desktop\ScreenToGif.exe
$Ruta29 = C:\Users\EdSon\Desktop\Solution 5 – Check device partition and osdevice p
$Ruta30 = C:\Users\EdSon\Desktop\SoulseekQt-2019-7-22-64bit.exe
$Ruta31 = C:\Users\EdSon\Desktop\SoulseekQt.zip
$Ruta32 = C:\Users\EdSon\Desktop\SplitString.java
$Ruta33 = C:\Users\EdSon\Desktop\SSR11-1.ABBYY [1BBE2E46].License
$Ruta34 = C:\Users\EdSon\Desktop\video.mp4
$Ruta35 = C:\Users\EdSon\Desktop\VirtualDub.lnk
$Ruta36 = C:\Users\EdSon\Desktop\Windows7 Shortcuts eBook.zip
PS C:\Users\EdSon>
En línea

cat26

Desconectado Desconectado

Mensajes: 10


Ver Perfil
Re: Como obtener nombres de archivos en una carpeta y agregarlos a un array | PS
« Respuesta #4 en: 7 Septiembre 2019, 04:40 am »

Muchas gracias eso me funciona, es que soy nuevo en powershell...
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines