2013-05-17 15 views
0

У меня есть одна большая проблема. Это приложение ДОЛЖНО СПРОСИТЬ пользователя для его имени ОДИН РАЗ. Он сохраняет имя пользователя, а затем, когда он запускает это приложение, первый этап должен быть пропущен, а переменная «имя» должна иметь свое имя из файла с расширением .user, но это не работает:/Пожалуйста, помогите!Пакетный файл: save & load

@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 

EDIT: Паузы только для меня :)

ответ

1

Вы просто задав имя в строку * .user. Вам нужно проанализировать имя файла и извлечь только первую часть.

Try:

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

Кроме того, чтобы просто создать пустой файл, вы можете использовать

Type nul > %name%.user 
+0

Wow ! Большое спасибо! Теперь он работает хорошо :) – 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

Смежные вопросы