我正在编写一个简单的批处理脚本来比较用户输入的内容,以及.dat中的一行文本(如果需要,我可以将其放在.txt文件中)。
到目前为止,我有一种方法可以使用 set 来获取用户的输入:
set /P username=Please enter your Username:
set /P given_password=Please enter your Password:
程序使用 cd :
导航到正确的目录cd C:\Users\Luke\Desktop\Dropbox\BATCH SERVER\USERS\%login_username%\
但现在我需要一种方法来读取.dat文件的内容,并将其与用户输入的内容进行比较(given_password)
提前感谢您的帮助, 路加福音
编辑: 有关.dat文件的更多信息: 该文件名为config.dat。 &安培;格式是这样的,其中 Geronimo 是正确的密码。
password = Geronimo
我还计划在其中存储其他信息,我也想在稍后的脚本中将这些信息分配给变量。
答案 0 :(得分:1)
您可以像这样解析文件:
for /f "tokens=1,2 delims== " %%i in ('findstr "=" "ini.dat"') do set "%%i=%%j"
findstr "=" "ini.dat"
将仅处理其中包含=
的行。所以你可以在文件中存储注释,如下所示:
This is the dat file
ist stores the username
user = Luke
and the password
password = Geronimo
and some other stuff...
编辑:
for
用于对多个对象执行相同的操作。有关详细信息,请参阅for /?
特别是在这里:
findstr "=" "ini.dat
查找文件ini.dat
中包含=
的所有行
它周围的单个qoutes '
告诉for
命令处理该命令的输出。
in (
... )
说:"对于所有找到的行"
"tokens=1,2 delims== "
说:"将第一部分和第二部分(称为"标记")放在=
或空格"之间。 (连续的分隔符被视为一个)
第一部分(令牌)被分配给特殊变量%%i
。由于存在第二个令牌,因此会将其分配给以下字母:%%j
/f
告诉for
命令使用哪种语法(有关其他可能性,请参阅for /?
)
in (
... )
说:"对于所有找到的行"
do set %%i=%%j
将变量(Token1(= %% i)设置为Token2(= %% j)
for
循环是更好的方法。
我知道,这很难理解,但值得花时间。尝试使用echo on
,这样您就可以更好地了解它的作用。
答案 1 :(得分:0)
如果.dat
文件只包含一行来定义要比较的密码,那么您的批处理文件可能很简单:
set /p "uname=Username: "
set /p "pass=Password: "
set /p comparepass=< "C:\Users\Luke\Desktop\Dropbox\BATCH SERVER\USERS\%login_username%\NAME.dat"
if "%pass%"=="%comparepass%" (
:: Insert code for when passwords are the same
) else (
:: Insert code for when passwords are not the same
)
这应该会帮助你。
莫纳