obtenha nomes de arquivos e use-os em uma lista de múltipla escolha

obtenha nomes de arquivos e use-os em uma lista de múltipla escolha

Quero criar um script do PowerShell para renomear arquivos PDF de suas respectivas linhas pdftotext e/ou título pdfinfo. Primeiro, quero fazer uma lista de múltipla escolha de arquivos PDF em um determinado caminho e escolher um arquivo PDF da lista que desejo renomear. Alguém poderia ajudar a fazer uma lista de opções de nomes de arquivos que pode ser canalizada através do comando gci?

Responder1

Obrigado por todos os comentários. Aqui está meu código para renomear um arquivo PDF a partir de seu respectivo texto ou metadados. O código é altamente primitivo porque não sou um homem de TI; apenas peguei emprestado e reuni peças de outras pessoas.

$x = @()

função Read-OpenFileDialog([string]$WindowTitle, [string]$InitialDirectory, [string]$Filter = "Todos os arquivos (*.*)|*.*", [switch]$AllowMultiSelect)
{  
    Adicionar-Tipo -AssemblyName System.Windows.Forms
    $openFileDialog = Novo objeto System.Windows.Forms.OpenFileDialog
    $openFileDialog.Title = $WindowTitle  
    if (![string]::IsNullOrWhiteSpace($InitialDirectory)) { $openFileDialog.InitialDirectory = $InitialDirectory }
    $openFileDialog.Filter = $Filtro
    if ($AllowMultiSelect) { $openFileDialog.MultiSelect = $false }
    $openFileDialog.ShowHelp = $true # Sem esta linha a função ShowDialog() pode travar dependendo da configuração do sistema e da execução do console versus ISE.
    $openFileDialog.ShowDialog() > $null
    if ($AllowMultiSelect) { return $openFileDialog.Filenames } else { return $openFileDialog.Filename }
}
$file = Read-OpenFileDialog -WindowTitle "Seleção de arquivo PDF" -InitialDirectory '$path' -Filter "Arquivos PDF (*.pdf)|*.pdf"
if (![string]::IsNullOrEmpty($file)) { Write-Host "Você selecionou o arquivo: $file" }
else { "Dosya seçmediniz" }

$path= "$file"|Caminho dividido
cd $caminho

[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing")

$objForm = Novo Objeto System.Windows.Forms.Form
$objForm.Text = "VER FORMA"
$objForm.Size = Novo Objeto System.Drawing.Size(700.400)
$objForm.StartPosition = "CenterScreen"

$objForm.KeyPreview = $True

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

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

$OKButton = Novo objeto System.Windows.Forms.Button
$OKButton.Location = Novo objeto System.Drawing.Size(75.220)
$OKButton.Size = Novo objeto System.Drawing.Size(75,23)
$OKButton.Text = "EVET"



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

$CancelButton = Novo objeto System.Windows.Forms.Button  
$CancelButton.Location = Novo Objeto System.Drawing.Size(200.220)  
$CancelButton.Size = Novo objeto System.Drawing.Size(75,23)  
$CancelButton.Text = "İPTAL ET"  
$CancelButton.Add_Click({$objForm.Close()})  
$objForm.Controls.Add($CancelButton)

$objLabel = Novo Objeto System.Windows.Forms.Label
$objLabel.Location = Novo Objeto System.Drawing.Size(10,20)
$objLabel.Size = Novo Objeto System.Drawing.Size(480,20)
$objLabel.Text = "LİSTEDEN SEÇİM YAPIN:"
$objForm.Controls.Add($objLabel)

$objListbox = Novo objeto System.Windows.Forms.Listbox
$objListbox.Location = Novo Objeto System.Drawing.Size(10,40)
$objListbox.Size = Novo objeto System.Drawing.Size(600.840)

$objListBox.Font = "Arial Preto"


pdftotext -eol dos -l 2 $ arquivo tmp.txt  
(gc tmp.txt) | ? {$_.trim() -ne "" } | definir conteúdo tmp.txt  

$i=pdfinfo "$arquivo" |grep -i título|sed -e 's/Título\:[ ]*//g'  
If (![string]::IsNullOrEmpty($i))  
{  
$linha6=$i  
}  



$line1= (Get-Content tmp.txt)[0]
$line2= (Get-Content tmp.txt)[1]
$line3= (Get-Content tmp.txt)[2]
$line4= (Get-Content tmp.txt)[3]
$line5= (Get-Content tmp.txt)[4]


[void] $objListbox.Items.Add("$linha1")
[void] $objListbox.Items.Add("$line2")
[void] $objListbox.Items.Add("$line3")
[void] $objListbox.Items.Add("$line4")
[void] $objListbox.Items.Add("$line5")
[void] $objListbox.Items.Add("$line6")



$objListbox.Height =170
$objForm.Controls.Add($objListbox)
$objForm.Topmost = $True

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


$z= $objListbox.SelectedItems

if ($z -ne ""){  
$z= $z -replace '[^a-zA-Z0-9_ ]',"_"  
$z= $z -substitua '[ ]',"_"  
$z= $z -substitua '_{2,}',"_"  
$z= $z.Trim()
Write-Host "dosya $z.pdf olarak kaydedildi"   
renomear item $ arquivo -novo nome $ z".pdf"
}  
Else {Write-Host "isim değişmedi"}  
rm tmp.txt  
pausa

$ x

informação relacionada