我正在研究简化cmd的项目,我需要向命令提示符添加新命令。
我有一个批处理文件,代码如下:
@echo off
:takeinput
set input=
echo.
set /p input=%cd%^>
call :emptycheck %input%
:emptycheck
if [%1]==[] goto takeinput
call :detect %input%
:detect
if /i %1==chrisutil call :chrisutil %input%
%input%
goto takeinput
:chrisutil
if [%2]==[] powershell.exe -command "iwr -useb https://christitus.com/win | iex"
if /i %2==web start www.christitus.com/windows-tool & goto takeinput
if errorlevel 1 (
echo Something bad happened.
)
goto takeinput
所以这段代码应该做的是,如果我输入
CHRISUTIL
,它应该在cmd中执行powershell命令:powershell.exe -command "iwr -useb https://christitus.com/win | iex"
,如果我输入CHRISUTIL web
,它应该在我的浏览器上打开www.christitus.com/windows-tool
。
有人可以告诉我我在这里做错了什么,因为
CHRISUTIL
导致“此时开始是意外的”但CHRISUTIL web
有效?
(我是批处理新手,我只知道基础知识)
谢谢。
问题:
当执行时
if [%2]==[]
if 确实调用了 powershell.exe -command ...
但 then 它继续使用 if /i %2==web
,由于语法错误而失败,因为 %2
为空。
解决办法:
执行 powershell 命令后退出 添加
& exit
或 & goto :eof
或在括号块中的 powershell 之后的第二行中添加这些内容