0

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

编辑:暂停只适合我:)

4

2 回答 2

1

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

尝试:

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

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

Type nul > %name%.user
于 2013-05-17T14:39:24.743 回答
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>>means 'append to an existing file or create a new file

于 2013-05-17T14:46:22.287 回答