如何将PowerShell模拟ls -ltr|grep的结果输出到文件并自动打开
PowerShell 输出结果到文件并打开的解决办法
先修正你的查询命令
你当前的命令存在语法混乱,正确模拟 Linux ls -ltr | grep 'string'(按修改时间从旧到新筛选含指定字符串的 HTML 文件)的命令如下:
# 仅当前目录 Get-ChildItem "C:\www\root\*.html" -Sort LastWriteTime | Select-String "string" | Select-Object -Unique Path # 递归包含子目录 Get-ChildItem "C:\www\root\*.html" -Recurse -Sort LastWriteTime | Select-String "string" | Select-Object -Unique Path
输出到文件并立即打开的正确方法
之前用Write-Output -Path写入失败是因为该参数并非用于文件写入,以下是可行方案:
基础版(直接输出+打开)
# 执行查询并输出到文件 Get-ChildItem "C:\www\root\*.html" -Sort LastWriteTime | Select-String "string" | Select-Object -Unique Path | Out-File -FilePath "C:\temp\output.txt" -Encoding utf8 # 立即打开生成的文件 Invoke-Item "C:\temp\output.txt"
增强版(自动创建目录)
如果C:\temp目录不存在,上面的命令会报错,可加入目录检查逻辑:
$outputFile = "C:\temp\output.txt" $outputDir = Split-Path $outputFile # 检查目录是否存在,不存在则创建 if (-not (Test-Path $outputDir)) { New-Item $outputDir -ItemType Directory | Out-Null } # 执行查询并写入文件 Get-ChildItem "C:\www\root\*.html" -Sort LastWriteTime | Select-String "string" | Select-Object -Unique Path | Out-File -FilePath $outputFile -Encoding utf8 # 打开文件 Invoke-Item $outputFile
简化写法(用重定向运算符)
也可以用 PowerShell 的重定向符号>直接输出:
(Get-ChildItem "C:\www\root\*.html" -Sort LastWriteTime | Select-String "string" | Select-Object -Unique Path) > "C:\temp\output.txt" Invoke-Item "C:\temp\output.txt"
内容的提问来源于stack exchange,提问作者capser
相关产品推荐
相关产品推荐

