“这个时候开始是出乎意料的”

问题描述 投票:0回答:1

我正在研究简化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
有效?

(我是批处理新手,我只知道基础知识)

谢谢。

batch-file
1个回答
0
投票

问题:

当执行时

if [%2]==[]
if 确实调用了
powershell.exe -command ...
then 它继续使用
if /i %2==web
,由于语法错误而失败,因为
%2
为空。

解决办法:

执行 powershell 命令后退出 添加

& exit
& goto :eof
或在括号块中的 powershell 之后的第二行中添加这些内容

© www.soinside.com 2019 - 2024. All rights reserved.