none
Tratamento de arquivos com PowerShell RRS feed

  • Pergunta

  • Bom dia,

    Senhores tenho o seguinte problema, criei o scrip abaixo para converter arquivos xls ou xlsx para csv, porem ao criar o nome do arquivo csv a extensão do arquivo anterior vai junto.

    Como eu posso tratar o nome desse arquivo para que ele remova o .xls ?



    Function Get-FileName($initialDirectory)
    {  
     [System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms") |
     Out-Null

     $OpenFileDialog = New-Object System.Windows.Forms.OpenFileDialog
     $OpenFileDialog.initialDirectory = $initialDirectory
     $OpenFileDialog.filter = "All files (*.*)| *.*"
     $OpenFileDialog.ShowDialog() | Out-Null
     $OpenFileDialog.filename



    $Files = Get-FileName -initialDirectory "c:\"


    Function ExcelCSV ($File)
    {
     
        $excelFile = $Files
        $Excel = New-Object -ComObject Excel.Application
        $Excel.Visible = $false
        $Excel.DisplayAlerts = $false
        $wb = $Excel.Workbooks.Open($excelFile)
        foreach ($ws in $wb.Worksheets)
        {
            $ws.SaveAs( $File + ".csv", 6)
        }
        $Excel.Quit()
    }


    #$FileName = "Book1"
    ExcelCSV -File "$Files"


    Sboorbou

    quarta-feira, 11 de março de 2015 13:47

Respostas

  • Samuel,

    Veja este exemplo e tente adaptar ao seu.

    $Arquivo = "C:\temp\teste\teste.xls"
    
    $Array = $Arquivo.Split(".")
    $Array[-1] = "csv"
    $ArquivoNovo = [string]::join(".", $array)

    1)Eu transformo a string com o nome do arquivo em um array separando pelo ponto ".".

    2) altero o último valor do array para "csv" , o último valor será sempre a extensão do arquivo

    3) Faço um join com os novos valores do array.


    Fábio de Paula Junior

    • Marcado como Resposta Samuel Santiago sexta-feira, 20 de março de 2015 16:15
    quinta-feira, 12 de março de 2015 19:09
    Moderador

Todas as Respostas

  • achei essa solução aqui, ainda não é o que eu quero, pois não consegui remover somente o .xls do arquivo, somente renomeando o arquivo todo....

    aceito qualquer dica

    http://blogs.technet.com/b/heyscriptingguy/archive/2011/03/21/use-powershell-to-replace-text-in-strings.aspx


    Sboorbou

    quarta-feira, 11 de março de 2015 19:36
  • Samuel,

    Veja este exemplo e tente adaptar ao seu.

    $Arquivo = "C:\temp\teste\teste.xls"
    
    $Array = $Arquivo.Split(".")
    $Array[-1] = "csv"
    $ArquivoNovo = [string]::join(".", $array)

    1)Eu transformo a string com o nome do arquivo em um array separando pelo ponto ".".

    2) altero o último valor do array para "csv" , o último valor será sempre a extensão do arquivo

    3) Faço um join com os novos valores do array.


    Fábio de Paula Junior

    • Marcado como Resposta Samuel Santiago sexta-feira, 20 de março de 2015 16:15
    quinta-feira, 12 de março de 2015 19:09
    Moderador
  • Obrigado, 

    Resolveu meu problema.


    Sboorbou

    sexta-feira, 20 de março de 2015 16:15