我有这个 PowerShell 命令行,通常通过 Google Chrome 打开网页,但我希望使用 Chrome 和 Firefox 随机打开该网页。
start-process -FilePath chrome.exe "www.quora.com"
在 PowerShell 脚本或 PowerShell 控制台窗口中使用的一个 PowerShell 解决方案由 Santiago Squarzon 发布:
start-process -FilePath ('chrome.exe','firefox.exe'|get-random) "https://www.quora.com"
要了解两个使用的 PowerShell cmdlet 及其工作原理,请打开 PowerShell 控制台窗口,执行以下命令,并仔细阅读为这两个 cmdlet 显示的两个帮助页面。
help start-process
help get-random
一个批处理文件解决方案是:
@echo off
setlocal EnableExtensions DisableDelayedExpansion
set /A "Browser=%RANDOM% & 1"
if %Browser% == 0 (set "Browser=chrome") else set "Browser=firefox"
start "" %Browser%.exe "https://www.quora.com"
endlocal
前两行只是完全定义所需的执行环境,并创建一个新的环境变量列表作为当前环境变量列表的副本,最后一行只是恢复初始执行环境和环境变量列表。如果依赖 Windows 默认值或调用此批处理文件的进程定义的执行环境没有问题,则可以省略第二个和最后一个命令行。
第三行使用算术表达式对随机数应用按位与与
1
,以随机分配给环境变量Browser
或0
。第三行也可以是:
1
此算术表达式将随机数除以二,并将余数
set /A Browser=%RANDOM% %% 2
或
0
分配给环境变量 1
。第四行使用 IF 条件重新定义环境变量 Browser
,当前值
Browser
带有字符串 0
,否则带有字符串 chrome
。第五行使用命令 firefox
将
start
或 chrome.exe
作为单独的进程启动,其中 firefox.exe
在继续处理批处理文件之前不会等待自我终止,并将 URL 传递给已启动的可执行文件。 cmd.exe
定义一个空字符串作为根本未打开的控制台窗口的可选标题,因为这两个浏览器是具有图形用户界面的 Windows 应用程序。要了解所使用的命令及其工作原理,请打开命令提示符窗口,执行以下命令,并完整、仔细地阅读每个命令显示的帮助页面。
""
help echo
echo /?
help endlocal
endlocal /?
help if
if /?
help set
set /?
help setlocal
setlocal /?
help start
start /?
PowerShell和CMD使用Windows内核库函数CreateProcess来启动Chrome或Firefox进程。