[英]Open a file with a PowerShell script in explorer
我想使用 Windows 内置表格查看器打开 CSV 文件,就像这个 SO 答案所示。
所以我希望当我在资源管理器中双击 CSV 文件时,运行以下命令:
Import-Csv [CSV-FILE] |Out-GridView
我最终创建了两个脚本文件。 一个文件名“read_csv.bat”,其中包含:
powershell.exe -ExecutionPolicy ByPass -noexit -File %~dp0read_csv.ps1 -csvfile %1
pause
另一个包含实际脚本的文件名“read_csv.ps1”
param (
[Parameter(Mandatory=$true)][string]$csvfile
)
Import-Csv $csvfile |Out-GridView
现在有没有办法更有效地做到这一点,所以只有一个脚本文件? 如果我设置资源管理器直接使用 POwerShell 脚本打开 CSV 文件,会出现蓝色消息
此应用无法在您的 PC 上运行若要查找适用于您 PC 的版本,请检查您发布的
笔记:
Since powershell.exe
is ultimately called, a console window will invariably (also) open when a CSV file is opened, because powershell.exe
is a console-subsystem application.
提供替代的 GUI 子系统可执行文件以避免创建控制台 window 是 GitHub 上此功能请求的主题; 与此同时,有一些解决方法:
您需要使用批处理文件中的powershell.exe
命令的改编版本,因为*.ps1
文件在设计上不能直接执行。
也就是说,在 CSV 文件类型的注册表定义中,使用以下命令定义Open
动词的操作(见下文):
powershell.exe -ExecutionPolicy ByPass -NoExit -File c:\path\to\read_csv.ps1 -csvfile "%1"
请务必将*.ps1
脚本的真实路径替换为c:\path\to\read_csv.ps1
(如有必要,请双引号); 您可以使用文字路径,也可以使用基于cmd.exe
样式的环境变量引用(例如"%USERPROFILE%\read_csv.ps1"
)的路径。
或者,您可以完全不用脚本文件,使用 PowerShell CLI
-Command
参数:
powershell.exe -ExecutionPolicy ByPass -NoExit -Command Import-Csv \"%1\" | Out-GridView
要自动配置此命令以通过文件资源管理器/桌面打开 CSV 文件的过程:
下面的代码修改注册表如下:
定义了一个新的文件类型PsCsvViewer
,带有一个调用上面定义的 PowerShell 命令的Open
动词(操作)。
将.csv
文件扩展名与该新文件类型相关联。
仅为当前用户创建上述定义,这意味着您不需要管理员权限来运行代码(写入HKEY_CLASSES_ROOT\
的子项需要)。
# Note the need for *3* "\", because an extra layer of escaping is
# needed for reg.exe.
$cmd = 'powershell.exe -ExecutionPolicy ByPass -NoExit -Command Import-Csv \\\"%1\\\" | Out-GridView'
# Create a new file type for the PowerShell command.
reg.exe add HKCU\Software\Classes\PsCsvViewer\Shell\Open\command /ve /d $cmd /f
# Associate .csv files with the new file type.
reg.exe add HKCU\Software\Classes\.csv /ve /d PsCsvViewer /f
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.