Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 为什么我的文件在到达If状态时突然关闭?_Batch File_If Statement - Fatal编程技术网

Batch file 为什么我的文件在到达If状态时突然关闭?

Batch file 为什么我的文件在到达If状态时突然关闭?,batch-file,if-statement,Batch File,If Statement,我使用批处理脚本来完成基本的用户功能(添加用户、删除、更改帐户类型等),而不是手动完成。程序会询问用户他们想做什么,下面是A、B、C、G选项。这部分工作正常,但是,用户输入选项后,它会立即关闭。检查后,if语句后面的命令不会运行。我应该如何修复if语句 @echo off net user echo What would you like to do? echo A: Turn off default admin account echo B: Turn off default guest

我使用批处理脚本来完成基本的用户功能(添加用户、删除、更改帐户类型等),而不是手动完成。程序会询问用户他们想做什么,下面是A、B、C、G选项。这部分工作正常,但是,用户输入选项后,它会立即关闭。检查后,if语句后面的命令不会运行。我应该如何修复if语句

@echo off

net user

echo What would you like to do?

echo A: Turn off default admin account
echo B: Turn off default guest account
echo C: Add a user
echo D: Remove a user
echo E: Change a users privilages
echo F: Change a password
echo G: Nothing

set /p en = "Enter in the Letter:"

if %en% == "A" (
    net user administrator /active:no
    echo Built-In Admin Is Turned Off
    Pause
)

if %en% == "B" (
    net user guest /active:no
    echo Guest Account Is Turned Off
    Pause
)

if %en% == "C" (
    set /p adduser = What is the name of the user you would like to add(Case Sensitive)?
    set /p addpassword = What is the password you would like to add to %adduser%?
    net user %adduser% %addpassword% /added
    echo Added %adduser%
    set /p objUser = GetObject(WinNT://MyComputer/%adduser%,user)
    %objUser%.PasswordExpired = 1
    %objUser%.SetInfo
    echo Password Will Need To Be Changed On Next Logon
    Pause

    if %en% == "D" (
    set /p deluser = What is the name of the user you would like to delete(Case Sensitive)?
    net user %deluser% /del
    echo User %deluser% has been Deleted
代码应该能够运行与字母对应的命令,然后保持打开状态,直到用户准备关闭它。但是,它不会运行序列,并在用户输入变量“en”的字母后关闭


如果不是出于不便,请解释为什么您的代码可以用更简单的术语工作。我对使用批处理脚本相当陌生,但仍然不了解绝大多数命令和术语。

最终代码应如下所示:

@echo关闭
网络用户
echo你想做什么?
回显A:关闭默认管理员帐户
echo B:关闭默认来宾帐户
echo C:添加用户
echo D:删除用户
echo E:更改用户权限
echo F:更改密码
G:没什么
set/p en=“在字母中输入:”
选项/c:ABCDEFG/M“输入字母:”/N
如果错误级别为7(
rem表示字母为“G”;在此处添加一些代码:
)
如果错误级别为6(
rem表示字母为“F”;在此处添加一些代码:
)
如果错误级别为5(
rem表示字母为“E”;在此处添加一些代码:
)
如果错误级别为4(
设置/p“deluser=您要删除的用户的姓名(区分大小写)?”
净用户%deluser%/del
回送用户%deluser%已被删除
暂停
)
如果错误级别为3(
set/p“adduser=要添加的用户的名称是什么(区分大小写)?”
设置/p“addpassword=要添加到%adduser%的密码是什么?”
净用户%adduser%%addpassword%/已添加
echo已添加%adduser%
set/p“objUser=GetObject(WinNT://MyComputer/%adduser%,user)”
%objUser%.PasswordExpired=1
%objUser%.SetInfo
下次登录时需要更改回显密码
暂停
)
如果错误级别为2(
净用户来宾/活动:否
echo来宾帐户已关闭
暂停
)
如果错误级别为1(
net用户管理员/活动:否
echo内置管理已关闭
暂停
)

而所有修复的东西都在评论中提到。键入
if/?
set/?
choice/?
以了解cmd中的详细信息。

字符串比较是文字比较。如果引号在一边,它们必须在另一边。您还需要删除set命令中equals符号前面的空格。我建议您使用choice命令而不是set/p。另外,你应该看看这是这个问题的另一个重复。