Powershell 命令行窗口 设置行宽、折行、行省略
return
在 PowerShell 中,默认的输出宽度通常是 120 个字符,但这个限制是由控制台窗口的宽度决定的。
方法 1: 手动调整控制台窗口大小
手动调整:
你可以通过拖动 PowerShell 窗口的边缘来手动调整窗口的大小,增加其宽度。
设置窗口大小:
右键点击 PowerShell 窗口的标题栏,选择“属性”或“默认值”。
在“布局”选项卡中,找到“窗口大小”部分,调整“宽度”值。
方法 2: 使用 PowerShell 命令设置窗口大小
# 修改窗口行长度、高度(行数),对 控制台 有效,但对 ISE 无效。
$bufSize = $Host.UI.RawUI.BufferSize
$bufSize.Width = 210;
$bufSize.Height = 9999;
# 调整缓冲区大小
$Host.UI.RawUI.Set_BufferSize($bufSize)
if ($psISE) {
Write-Output "此脚本不能在 PowerShell ISE 中调整窗口大小。"
} else {
# 调整窗口大小
$winSize = $Host.UI.RawUI.WindowSize
$winSize.Width = 200
$winSize.Height = 30
}
方法 3: 使用 Out-Host 命令
如果你希望在输出时不受控制台宽度的限制,可以使用 Out-Host 命令并设置 -Paging 参数:
$result | Format-Table -AutoSize | Out-Host -Paging
这将允许你在分页模式下查看输出,虽然这并不直接扩展行长度,但可以更方便地查看长输出。
方法 4: 使用 -Property 指定各列宽度
如果不使用 -AutoSize ,可以使用 -Property 参数来指定列的属性,并结合自定义的宽度设置。
例如,假设我们有一个包含“Name”和“Description”两列的对象,要输出表格并且确保内容完整显示,可以这样设置:
$objects | Format-Table -Property @{Label = "Name"; Expression = {$_.Name}; Width = 20}, @{Label = "Description"; Expression = {$_.Description}; Width = 50}
这里为 "Name" 列设置了宽度为 20 个字符,"Description" 列设置为 50 个字符。
通过这种方式,可以根据内容的大致长度来合理分配列宽,避免内容被省略。
方法 5: 使用 Format-Table 的 -Wrap 参数
$result | Format-Table -Wrap -AutoSize
超出长度时,折行输出。如果你希望在输出时自动换行,可以使用 -Wrap 参数:
方法 6: 使用 Out-String 命令
$result | Format-Table -AutoSize | Out-String -Width 4096 | Out-File -FilePath $outputFilePath -Encoding UTF8
-Width 4096 参数指定了字符串的最大宽度为 4096 个字符. 后续还可接着输出到文件。
方法 7: 使用 Export-Csv 命令
如果表格内容是结构化的数据,可以考虑使用 Export-Csv 命令将数据导出为 CSV 文件,这样可以避免内容被省略。具体命令如下:
$result | Export-Csv -Path $outputFilePath -NoTypeInformation -Encoding UTF8
CSV 文件可以在 Excel 或其他文本编辑器中打开,不会出现内容被省略的问题。
如果输出中文乱码,尝试:
$result | Export-Csv -Path $outputFilePath -NoTypeInformation -Encoding UTF8BOM
主要还是根据 $result 的原编码形式来指定正确的编码,如:
Default, ASCII, UTF8, UTF8BOM, UTF32, UTF32BOM, Unicode, BigEndianUnicode, OEM
Default:系统默认编码,通常是 ANSI 编码,具体取决于系统区域设置。
或者使用转换命令 ConvertTo-Csv:
$result | ConvertTo-Csv -NoTypeInformation | Out-File -FilePath $outputFilePath -Encoding UTF8BOM
方法 8: 4:使用 Select-Object 设置每列值的长度
超出长度时,列值以 ... 省略方式输出
# 创建一个空的数组来存储结果
$result = @()
$result += [PSCustomObject]@{
PriFileName = $file.BaseName + ".pri"
ResourceMapName = $resourceMapName
EnglishName = $englishName
ChineseName = $chineseName
}
$len=25
$uniqueResults = $result | Select-Object @{Name='PriFileName'; Expression={if ($_.PriFileName.Length -gt $len) { $_.PriFileName.Substring(0, $len) + '...' } else { $_.PriFileName }}},
@{Name='ResourceMapName'; Expression={if ($_.ResourceMapName.Length -gt $len) { $_.ResourceMapName.Substring(0, $len) + '...' } else { $_.ResourceMapName }}},
@{Name='EnglishName'; Expression={if ($_.EnglishName.Length -gt $len) { $_.EnglishName.Substring(0, $len) + '...' } else { $_.EnglishName }}},
@{Name='ChineseName'; Expression={if ($_.ChineseName.Length -gt $len) { $_.ChineseName.Substring(0, $len) + '...' } else { $_.ChineseName }}} |
Format-Table -AutoSize
注意事项
扩展控制台窗口的宽度可能会影响其他应用程序的显示,确保在调整时考虑到其他因素。
如果你在使用 PowerShell ISE 或 Visual Studio Code 等其他环境,调整窗口大小的方法可能会有所不同。
return
在 PowerShell 中,默认的输出宽度通常是 120 个字符,但这个限制是由控制台窗口的宽度决定的。
方法 1: 手动调整控制台窗口大小
手动调整:
你可以通过拖动 PowerShell 窗口的边缘来手动调整窗口的大小,增加其宽度。
设置窗口大小:
右键点击 PowerShell 窗口的标题栏,选择“属性”或“默认值”。
在“布局”选项卡中,找到“窗口大小”部分,调整“宽度”值。
方法 2: 使用 PowerShell 命令设置窗口大小
# 修改窗口行长度、高度(行数),对 控制台 有效,但对 ISE 无效。
$bufSize = $Host.UI.RawUI.BufferSize
$bufSize.Width = 210;
$bufSize.Height = 9999;
# 调整缓冲区大小
$Host.UI.RawUI.Set_BufferSize($bufSize)
if ($psISE) {
Write-Output "此脚本不能在 PowerShell ISE 中调整窗口大小。"
} else {
# 调整窗口大小
$winSize = $Host.UI.RawUI.WindowSize
$winSize.Width = 200
$winSize.Height = 30
}
方法 3: 使用 Out-Host 命令
如果你希望在输出时不受控制台宽度的限制,可以使用 Out-Host 命令并设置 -Paging 参数:
$result | Format-Table -AutoSize | Out-Host -Paging
这将允许你在分页模式下查看输出,虽然这并不直接扩展行长度,但可以更方便地查看长输出。
方法 4: 使用 -Property 指定各列宽度
如果不使用 -AutoSize ,可以使用 -Property 参数来指定列的属性,并结合自定义的宽度设置。
例如,假设我们有一个包含“Name”和“Description”两列的对象,要输出表格并且确保内容完整显示,可以这样设置:
$objects | Format-Table -Property @{Label = "Name"; Expression = {$_.Name}; Width = 20}, @{Label = "Description"; Expression = {$_.Description}; Width = 50}
这里为 "Name" 列设置了宽度为 20 个字符,"Description" 列设置为 50 个字符。
通过这种方式,可以根据内容的大致长度来合理分配列宽,避免内容被省略。
方法 5: 使用 Format-Table 的 -Wrap 参数
$result | Format-Table -Wrap -AutoSize
超出长度时,折行输出。如果你希望在输出时自动换行,可以使用 -Wrap 参数:
方法 6: 使用 Out-String 命令
$result | Format-Table -AutoSize | Out-String -Width 4096 | Out-File -FilePath $outputFilePath -Encoding UTF8
-Width 4096 参数指定了字符串的最大宽度为 4096 个字符. 后续还可接着输出到文件。
方法 7: 使用 Export-Csv 命令
如果表格内容是结构化的数据,可以考虑使用 Export-Csv 命令将数据导出为 CSV 文件,这样可以避免内容被省略。具体命令如下:
$result | Export-Csv -Path $outputFilePath -NoTypeInformation -Encoding UTF8
CSV 文件可以在 Excel 或其他文本编辑器中打开,不会出现内容被省略的问题。
如果输出中文乱码,尝试:
$result | Export-Csv -Path $outputFilePath -NoTypeInformation -Encoding UTF8BOM
主要还是根据 $result 的原编码形式来指定正确的编码,如:
Default, ASCII, UTF8, UTF8BOM, UTF32, UTF32BOM, Unicode, BigEndianUnicode, OEM
Default:系统默认编码,通常是 ANSI 编码,具体取决于系统区域设置。
或者使用转换命令 ConvertTo-Csv:
$result | ConvertTo-Csv -NoTypeInformation | Out-File -FilePath $outputFilePath -Encoding UTF8BOM
方法 8: 4:使用 Select-Object 设置每列值的长度
超出长度时,列值以 ... 省略方式输出
# 创建一个空的数组来存储结果
$result = @()
$result += [PSCustomObject]@{
PriFileName = $file.BaseName + ".pri"
ResourceMapName = $resourceMapName
EnglishName = $englishName
ChineseName = $chineseName
}
$len=25
$uniqueResults = $result | Select-Object @{Name='PriFileName'; Expression={if ($_.PriFileName.Length -gt $len) { $_.PriFileName.Substring(0, $len) + '...' } else { $_.PriFileName }}},
@{Name='ResourceMapName'; Expression={if ($_.ResourceMapName.Length -gt $len) { $_.ResourceMapName.Substring(0, $len) + '...' } else { $_.ResourceMapName }}},
@{Name='EnglishName'; Expression={if ($_.EnglishName.Length -gt $len) { $_.EnglishName.Substring(0, $len) + '...' } else { $_.EnglishName }}},
@{Name='ChineseName'; Expression={if ($_.ChineseName.Length -gt $len) { $_.ChineseName.Substring(0, $len) + '...' } else { $_.ChineseName }}} |
Format-Table -AutoSize
注意事项
扩展控制台窗口的宽度可能会影响其他应用程序的显示,确保在调整时考虑到其他因素。
如果你在使用 PowerShell ISE 或 Visual Studio Code 等其他环境,调整窗口大小的方法可能会有所不同。