关于使用PowerShell Select-String, exiftool(-k) 的问题
Question about using PowerShell Select-String, exiftool(-k)
在 PowerShell 脚本中,我尝试使用 Select-String
过滤下面 exiftool(-k).exe
命令的输出。
我尝试了很多排列组合,但 none 有效,而且我总是看到未过滤的输出。我需要做什么来过滤这个命令的输出?
Start-Process -FilePath "C:\PowerShell\exiftool(-k).exe" -ArgumentList test.jpg |
Select-String -pattern 'GPS' -SimpleMatch
命名不便。将其重命名为 exiftool.exe 和 运行 不启动进程。
rename-item 'exiftool(-k).exe' exiftool.exe
C:\Users\bfbarton\PowerShell\exiftool.exe test-jpg | Select-String GPS
或者
$env:path += ';C:\Users\bfbarton\PowerShell'
exiftool test.jpg | Select-String GPS
网站推荐给'rename to "exiftool.exe" for command-line use'。 https://exiftool.org。即使在 unix 中,如果不转义括号也是行不通的。
还有使用呼叫接线员的选项。使用制表符完成实际上是这样做的:
& '.\exiftool(-k).exe' test.jpg | select-string gps
您无法直接从 Start-Process
调用 [1] 接收输出,因此 在管道中使用它毫无意义。
- 事实上,在 Windows 上,您使用
Start-Process
启动的程序以 不同的 、新的 window 运行,这就是您看到的地方未过滤的输出(假定没有 Select-String
被应用 那里 );在你的调用 window 中,Start-Process
产生了 没有输出 ,因此没有任何东西被发送到 Select-String
,整个流水线没有输出。
切勿使用 Start-Process
来 同步 调用 控制台应用程序 其输出要 捕获或重定向 - 只需直接调用应用程序:
& "C:\PowerShell\exiftool(-k).exe" test.jpg | Select-String GPS -SimpleMatch
请注意,此调用需要 &
、call operator,因为您的可执行文件路径是 (double-)quoted(这里是必需的, 因为文件名包含 (
和 )
); &
只需要引用 and/or 的可执行路径包含变量引用;例如,您不需要它来调用 git ...
。
[1] 如果您将 -NoNewWindow -Wait
添加到 Start-Process
调用,你仍然无法捕获,传递或重定向它.
在 PowerShell 脚本中,我尝试使用 Select-String
过滤下面 exiftool(-k).exe
命令的输出。
我尝试了很多排列组合,但 none 有效,而且我总是看到未过滤的输出。我需要做什么来过滤这个命令的输出?
Start-Process -FilePath "C:\PowerShell\exiftool(-k).exe" -ArgumentList test.jpg |
Select-String -pattern 'GPS' -SimpleMatch
命名不便。将其重命名为 exiftool.exe 和 运行 不启动进程。
rename-item 'exiftool(-k).exe' exiftool.exe
C:\Users\bfbarton\PowerShell\exiftool.exe test-jpg | Select-String GPS
或者
$env:path += ';C:\Users\bfbarton\PowerShell'
exiftool test.jpg | Select-String GPS
网站推荐给'rename to "exiftool.exe" for command-line use'。 https://exiftool.org。即使在 unix 中,如果不转义括号也是行不通的。
还有使用呼叫接线员的选项。使用制表符完成实际上是这样做的:
& '.\exiftool(-k).exe' test.jpg | select-string gps
您无法直接从
Start-Process
调用 [1] 接收输出,因此 在管道中使用它毫无意义。- 事实上,在 Windows 上,您使用
Start-Process
启动的程序以 不同的 、新的 window 运行,这就是您看到的地方未过滤的输出(假定没有Select-String
被应用 那里 );在你的调用 window 中,Start-Process
产生了 没有输出 ,因此没有任何东西被发送到Select-String
,整个流水线没有输出。
- 事实上,在 Windows 上,您使用
切勿使用
Start-Process
来 同步 调用 控制台应用程序 其输出要 捕获或重定向 - 只需直接调用应用程序:
& "C:\PowerShell\exiftool(-k).exe" test.jpg | Select-String GPS -SimpleMatch
请注意,此调用需要 &
、call operator,因为您的可执行文件路径是 (double-)quoted(这里是必需的, 因为文件名包含 (
和 )
); &
只需要引用 and/or 的可执行路径包含变量引用;例如,您不需要它来调用 git ...
。
[1] 如果您将 -NoNewWindow -Wait
添加到 Start-Process
调用,你仍然无法捕获,传递或重定向它.