如何获取文件的文件夹位置?(Powershell)

如何获取文件的文件夹位置?(Powershell)

我正在使用下面的脚本,可以在这个线程。。我想自动将 Excel 文件保存在与 CSV 文件相同的文件夹中,并使用与 CSV 文件相同的名称。

我如何获取文件夹位置和文件名?

$CSVs = @()
$args.ForEach({
    If ((Test-Path $_) -and ($_ -Match "\.csv$|\.txt$")) {
        $CSVs += ,$_
    } 
})

if (-Not $null -eq $CSVs) {

    $excel = New-Object -ComObject excel.application 
    $excel.visible = $true
    $excel.SheetsInNewWorkbook = $CSVs.Count    
    $workbook = $excel.Workbooks.Add()

    for ($i=0; $i -lt $CSVs.Count; $i++){

        $csv = Get-Item $CSVs[$i]
        $worksheet = $workbook.worksheets.Item($i + 1)
        $worksheet.Name = $csv.basename

        $TxtConnector = ("TEXT;" + $csv.fullname)
        $Connector = $worksheet.QueryTables.add($TxtConnector,$worksheet.Range("A1"))
        $query = $worksheet.QueryTables.item($Connector.name)
        $query.TextFilePlatform = 65001
        $query.TextFileTextQualifier = 1
        $query.TextFileOtherDelimiter = $Excel.Application.International(5) 
        $query.TextFileParseType  = 1
        $arrFormats = ,2 * $worksheet.Cells.Columns.Count
        $query.TextFileColumnDataTypes = $arrFormats
        $query.AdjustColumnWidth = 1
        $query.Refresh()
        $query.Delete()
    }
}

答案1

它/它们将在 $args 中。仅当脚本从您链接的帖子中创建的 SendTo 快捷方式启动时,$args 才会被填充。

$args | ForEach{
  echo ('Path: "{0}"' -f (Split-Path $_))
  echo ('FIle: "{0}"' -f (Split-Path $_ -Leaf))
}

相关内容