我有一个大问题。这个应用程序应该询问用户的名字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
编辑:暂停只适合我:)
答案 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