2013-05-17 69 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

相關問題