在.dat文件中存储变量

时间:2014-05-21 06:07:17

标签: variables batch-file

我正在编写一个简单的批处理脚本来比较用户输入的内容,以及.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

我还计划在其中存储其他信息,我也想在稍后的脚本中将这些信息分配给变量。

2 个答案:

答案 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)

如果只有一个"数据" Mona的方式更好理解和更好的方式。在文件中。如果有更多的数据集(正如您所要求的那样#34;我还计划在其中存储其他信息")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
)

这应该会帮助你。

莫纳