批处理文件:save&加载

时间:2013-05-17 13:48:06

标签: batch-file load save exists

我有一个大问题。这个应用程序应该询问用户的名字ONCE。它保存了用户名,然后当他再次运行这个应用程序时,应跳过第一阶段,变量“name”应该从扩展名为.user的文件中找到他的名字,但它不起作用:/请帮助!

@echo off
If NOT EXIST .settings md .settings
cd .settings
If NOT EXIST *.user goto abc
pause

If EXIST *.user set name=*.user
cd ..
pause
goto welcome
pause
:abc
cd ..
echo Hi! Welcome in my program!
set /p name=Tell me your name! 
If NOT EXIST .settings md .settings
cd .settings
echo >>%name%.user
pause

:welcome
cls
echo Welcome %name%
pause

Other commands

编辑:暂停只适合我:)

2 个答案:

答案 0 :(得分:1)

您只是将名称设置为字符串* .user。您需要解析文件名并仅提取第一部分。

尝试:

If EXIST *.user (
  for /f %%a in ('dir /b *.user') do (set name=%%~fa)
)
cd ..

此外,要创建一个空白文件,您可以使用

Type nul > %name%.user

答案 1 :(得分:1)

你要做的事情并不是特别清楚。

如果fred输入了他的名字,这一行:

echo >>%name%.user

会将ECHO状态(Echo打开/关闭)发送到文件fred.user

如果您希望文件.user包含“fred”,那么您需要其中一个

echo %name%>.user
>.user echo %name%

(就个人而言,我会使用第二个)

如果您想要从文件.user中读取用户名,那么

set /p name=<.user

总而言之,我会尝试

@ECHO OFF
SETLOCAL
IF EXIST .user (SET /p name=<.user) ELSE (SET /p name=Your name ?)
 >.user ECHO %name%

 ECHO name is %name%

(我会让你做目录操作)

请注意,我使用了>,这意味着“开始一个全新的文件whereas&gt;&gt; means 'append to an existing file or create a new file