批次:(此时不被预料到

时间:2015-02-16 13:11:33

标签: batch-file

我想知道为什么我会在这个脚本中收到错误(“(此时并未预料到”)。

for /f "delims=" %%t in (%cd%\Multitool\Multitool.txt) do (
set /p username=
set /p password=
set /p created=
)

if %created%==accountcreated ( goto CONTINUE ) else ( goto CREATE )

我有这些代码行总是给我一个错误:“(此时并未预料到。”

在我的程序中,我想知道用户是否已经创建了一个帐户... 当用户创建一个帐户时,我在%cd%\ Multitool \ Multitool.txt中回显:

(
echo %username%
echo %password%
echo accountcreated
) > %cd%\Multitool\Multitool.txt

那么你能告诉我为什么我会得到这个错误以及如何纠正它吗? 抱歉我的英语不好用法语...

1 个答案:

答案 0 :(得分:0)

@ECHO OFF
SETLOCAL enabledelayedexpansion

:: set up logfile and password 

SET "logfile=U:\q28542185.txt"
SET "password=dummypassword"
SET "myusername=dummyusername"

:: Dummy log entry

(
echo %myusername%
echo %password%
echo accountcreated
) > %logfile%

:: This is just to ensure the three variables are empty

FOR %%t IN (myusername password created) DO SET "%%t="


for /f "delims=" %%t in (%logfile%) do (
 SET "myusername=!password!"
 SET "password=!created!"
 SET "created=%%t"
)

if %created%==accountcreated ( goto CONTINUE ) else ( goto CREATE )

:continue
ECHO got to continue

GOTO :eof

:create
ECHO got to create

GOTO :EOF

我使用名为q28542185.txt的文件来接收测试的日志信息。

请注意,username是由系统初始化的magic variable,因此我不想更改它,因此我已替换myusername

第一部分设置一个虚拟日志文件进行测试。

替换for循环读取日志文件,并使用delayedexpansion工具通过变量名“涟漪”行,以便按适当的顺序设置变量。

请注意,如果created包含 Spaces ,则应将if语句修改为

if "%created%"=="accountcreated" ....

允许正确的解析序列IF token operator token