obtener nombres de archivos y utilizarlos en una lista de opciones múltiples

obtener nombres de archivos y utilizarlos en una lista de opciones múltiples

Quiero crear un script de PowerShell para cambiar el nombre de los archivos PDF a partir de sus respectivas líneas de pdf a texto y/o título de pdfinfo. Primero, quiero hacer una lista de opciones múltiples de archivos pdf en una ruta determinada y seleccionar un archivo pdf de la lista cuyo nombre quiero cambiar. ¿Alguien podría ayudarme a hacer una lista de opciones a partir de nombres de archivos que se pueden canalizar a través del comando gci?

Respuesta1

Gracias por todos los comentarios. Aquí está mi código para cambiar el nombre de un archivo pdf a partir de su respectivo texto o metadatos. El código es muy primitivo porque no soy un informático; simplemente tomó prestado y reunió piezas de otros.

$x = @()

función Read-OpenFileDialog([cadena]$WindowTitle, [cadena]$InitialDirectory, [cadena]$Filter = "Todos los archivos (*.*)|*.*", [switch]$AllowMultiSelect)
{  
    Agregar tipo -AssemblyName System.Windows.Forms
    $openFileDialog = Nuevo-Objeto System.Windows.Forms.OpenFileDialog
    $openFileDialog.Title = $Título de la ventana  
    if (![cadena]::IsNullOrWhiteSpace($InitialDirectory)) { $openFileDialog.InitialDirectory = $InitialDirectory }
    $openFileDialog.Filter = $Filtro
    si ($AllowMultiSelect) { $openFileDialog.MultiSelect = $false }
    $openFileDialog.ShowHelp = $true # Sin esta línea, la función ShowDialog() puede bloquearse según la configuración del sistema y si se ejecuta desde la consola o desde ISE.
    $openFileDialog.ShowDialog() > $nulo
    if ($AllowMultiSelect) { devolver $openFileDialog.Filenames } else { devolver $openFileDialog.Filename }
}
$file = Read-OpenFileDialog -WindowTitle "Sesión de archivo PDF" -InitialDirectory '$path' -Filter "Archivos PDF (*.pdf)|*.pdf"
if (![string]::IsNullOrEmpty($file)) { Write-Host "Seleccionó el archivo: $file" }
else { "Dosya seçmediniz" }

$ruta= "$archivo"|Ruta dividida
cd $ruta

[vacío] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
[vacío] [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing")

$objForm = Nuevo-Objeto System.Windows.Forms.Form
$objForm.Text = "VERİ FORMU"
$objForm.Size = Sistema de nuevo objeto.Drawing.Size(700,400)
$objForm.StartPosition = "Pantalla Central"

$objForm.KeyPreview = $Verdadero

$objForm.Add_KeyDown({si ($_.KeyCode -eq "Entrar")
    {
$x=$objListbox.SelectedItem;$objForm.Close()
    }
    })

$objForm.Add_KeyDown({si ($_.KeyCode -eq "Escape")
    {$objForm.Close()}})

$OKButton = Nuevo-Objeto System.Windows.Forms.Button
$OKButton.Ubicación = Sistema de nuevo objeto.Dibujo.Tamaño(75,220)
$OKButton.Size = Nuevo-Objeto System.Drawing.Size(75,23)
$OKButton.Text = "EVET"



$objForm.Controls.Add($OKButton)  
$OKButton.Add_Click({$x=$objListbox.SelectedItem;$objForm.Close()})

$CancelButton = Nuevo objeto System.Windows.Forms.Button  
$CancelButton.Location = Nuevo-Objeto System.Drawing.Size(200,220)  
$CancelButton.Size = Sistema de nuevo objeto.Dibujo.Tamaño(75,23)  
$CancelButton.Text = "İPTAL ET"  
$CancelButton.Add_Click({$objForm.Close()})  
$objForm.Controls.Add($CancelButton)

$objLabel = Nuevo-Objeto System.Windows.Forms.Label
$objLabel.Location = Sistema de nuevo objeto.Dibujo.Tamaño(10,20)
$objLabel.Size = Sistema de nuevo objeto.Dibujo.Tamaño(480,20)
$objLabel.Text = "LİSTEDEN SEÇİM YAPIN:"
$objForm.Controls.Add($objLabel)

$objListbox = Nuevo-Objeto System.Windows.Forms.Listbox
$objListbox.Ubicación = Sistema de nuevo objeto.Dibujo.Tamaño(10,40)
$objListbox.Size = Sistema de nuevo objeto.Dibujo.Tamaño(600,840)

$objListBox.Font = "Arial Negro"


pdftotext -eol dos -l 2 $archivo tmp.txt  
(gc tmp.txt) | ? {$_.trim() -ne "" } | establecer contenido tmp.txt  

$i=pdfinfo "$archivo" |grep -i título|sed -e 's/Título\:[ ]*//g'  
Si (![cadena]::IsNullOrEmpty($i))  
{  
$línea6=$yo  
}  



$línea1= (Obtener contenido tmp.txt)[0]
$línea2= (Obtener contenido tmp.txt)[1]
$línea3= (Obtener contenido tmp.txt)[2]
$line4= (Obtener contenido tmp.txt)[3]
$línea5= (Obtener contenido tmp.txt)[4]


[nulo] $objListbox.Items.Add("$line1")
[nulo] $objListbox.Items.Add("$line2")
[nulo] $objListbox.Items.Add("$line3")
[nulo] $objListbox.Items.Add("$line4")
[nulo] $objListbox.Items.Add("$line5")
[nulo] $objListbox.Items.Add("$line6")



$objListbox.Altura =170
$objForm.Controls.Add($objListbox)
$objForm.Topmost = $Verdadero

$objForm.Add_Shown({$objForm.Activate()})
[nulo] $objForm.ShowDialog()


$z= $objListbox.Elementos seleccionados

si ($z -ne ""){  
$z= $z -reemplazar '[^a-zA-Z0-9_ ]',"_"  
$z= $z -reemplazar '[ ]',"_"  
$z= $z -reemplazar '_{2,}',"_"  
$z= $z.Recortar()
Write-Host "dosya $z.pdf olarak kaydedildi"   
cambiar el nombre del elemento $archivo -nuevo nombre $z".pdf"
}  
De lo contrario {Write-Host "isim değişmedi"}  
rm tmp.txt  
pausa

$x

información relacionada