2013-05-17 100 views
0

我有一个大问题。这个应用程序应该问他的名字一次的用户。它保存用户名,然后当他再次运行这个应用程序时,第一阶段应该被跳过,变量“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 

编辑:暂停仅是为我:)

回答

1

你只是设置名称为字符串*。用户。您需要解析文件名并提取第一部分。

尝试:

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

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

Type nul > %name%.user 
+0

哇!真的感谢!现在它运作良好:) – Michael

1

这不是特别清楚你正在尝试做的。

如果弗雷德已经进入了他的名字,这条线:

echo >>%name%.user 

将发送ECHO状态(回声是开/关)的文件fred.user

如果你想要的文件.user含有“弗雷德”,那么你需要的

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 >>means 'append to an existing file or create a new file

+0

这种方法也很好,但我更喜欢第二个。 :D谢谢!我相信我将来会使用它! :) – Michael