[英]batch file net use with for output for variable if
我有用于在Windows中使用批处理文件映射驱动器的代码,我使用nik和password之类的参数。 然后,如果用户和密码匹配,程序将给出输出“成功”,否则程序将给出输出“某些错误”。 我通过使用FOR DO和FIND的网络使用获得了输出成功的参数和一些错误
@MC ND
这里
:MENU
Title MyTitle
@ECHO OFF
@ECHO OFF
Echo --------------- MENU -----------------------
Echo 1. Press 1 for start or reload program.
Echo 2. Press 0 for exit.
Echo Choose :
SET /p tekan=
IF %tekan%==0 GOTO EXIT
IF %tekan%==1 GOTO FORM_QMR
:FORM_QMR
Echo ---------- Fill this Form (%userdomain%) ----------
SET /p nik="Insert Your ID :"
SET /p passwd="Insert Your Password :"
GOTO CREDENTIAL_ACTION
IF %userdomain% == DOMAIN GOTO CREDENTIAL_ACTION_FOR_USER_WITH_DOMAIN
IF NOT %userdomain% == DOMAIN GOTO CREDENTIAL_ACTION_FOR_USER_WITHOUT_DOMAIN
:CREDENTIAL_ACTION_FOR_USER_WITH_DOMAIN
FOR /F %%H IN ('NET USE "\\myserver\Path01\Path02" /User:domain\%nik% %passwd% 2^>^&1 ^| Find /I "System error 1326 has occurred."') DO SET "ACTSTATUS=BAD"
IF %ACTSTATUS%==BAD
(
Echo "Some error found, please contact administrator."
GOTO FORM_QMR
)
IF NOT %ACTSTATUS%==BAD
(
Echo "Success."
)
:CREDENTIAL_ACTION_FOR_USER_WITHOUT_DOMAIN
FOR /F %%H IN ('NET USE "\\192.168.1.1\Path01\Path02" /User:domain\%nik% %passwd% 2^>^&1 ^| Find /I "System error 1326 has occurred."') DO SET "ACTSTATUS=BAD"
IF %ACTSTATUS%==BAD
(
Echo "Some error found, please contact administrator."
GOTO FORM_QMR
)
IF NOT %ACTSTATUS%==BAD(
Echo "Success."
)
:EXIT
exit
我的问题是在插入密码后,程序总是发送输出“命令的语法不正确”
谁能帮我..
以下代码段中纠正了一些错误(如有必要,请注明):
:FORM_QMR
Echo ---------- Fill this Form (%userdomain%) ----------
SET /p nik="Insert Your ID :"
SET /p passwd="Insert Your Password :"
rem CREDENTIAL_ACTION label not found
rem GOTO CREDENTIAL_ACTION
SET "ACTSTATUS=BAD"
IF %userdomain% == DOMAIN (
GOTO CREDENTIAL_ACTION_FOR_USER_WITH_DOMAIN
) else (
GOTO CREDENTIAL_ACTION_FOR_USER_WITHOUT_DOMAIN
)
:CREDENTIAL_ACTION_FOR_USER_WITH_DOMAIN
rem note double quoted password and "delims=" option
FOR /F "delims=" %%H IN ('
NET USE "\\myserver\Path01\Path02" /User:domain\%nik% "%passwd%" 2^>NUL ^| Find /I "The command completed successfully"
') DO SET "ACTSTATUS=GOOD"
goto :common
:CREDENTIAL_ACTION_FOR_USER_WITHOUT_DOMAIN
rem note double quoted password and "delims=" option
FOR /F "delims=" %%H IN ('
NET USE "\\192.168.1.1\Path01\Path02" /User:domain\%nik% "%passwd%" 2^>NUL ^| Find /I "The command completed successfully"
') DO SET "ACTSTATUS=GOOD"
:common
rem note parentheses and double quotes
IF "%ACTSTATUS%"=="BAD" (
Echo "Some error found, please contact administrator."
GOTO FORM_QMR
) else (
Echo "Success."
)
带有较少GOTO
的另一种方法是使用由choice.exe
和net.exe
设置的ERRORLEVEL
:
@ECHO OFF
SETLOCAL
:MENU
Title MyTitle
Echo --------------- MENU -----------------------
Echo Press 1 for start or reload program.
Echo Press 0 for exit.
Echo Choose:
CHOICE /C 10 /M "Press 1 for start or reload program, 0 for exit."
IF errorlevel 2 GOTO EXIT
:FORM_QMR
Echo ---------- Fill this Form (%userdomain%) ----------
SET /p nik="Insert Your ID :"
SET /p passwd="Insert Your Password :"
IF %userdomain% == DOMAIN (
set "_shar=\\myserver\Path01\Path02"
set "_user=/User:domain\%nik%"
) else (
set "_shar=\\192.168.1.1\Path01\Path02"
set "_user=/User:domain\%nik%"
)
>NUL 2>&1 NET USE "%_shar%" %_user% "%passwd%"&&SET "ACTSTATUS=OK"||SET "ACTSTATUS=BAD"
IF "%ACTSTATUS%"=="BAD" (
Echo "Some error found, please contact administrator."
GOTO FORM_QMR
) else (
Echo "Success."
)
:EXIT
说明:
CHOICE.exe
接受用户输入到批处理文件 ,另请参阅choice /?
。 &&
和||
: 重定向 。 (
必须与相关的if
在同一物理线上。
同样的评论也适用于do
并且else
必须是) else (
否,但是,也许(除了更有经验的用户...)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.