0

1 つの大きな問題があります。このアプリは、一度ユーザーに名前を尋ねる必要があります。ユーザー名を保存し、彼がこのアプリを再度実行すると、最初の段階はスキップされ、変数「名前」には拡張子が.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

name を文字列 *.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ステータス(エコーはオン/オフ)をファイルに送信しますfred.user

ファイル.userに「fred」を含めたい場合は、次のいずれかが必要です

echo %name%>.user
>.user echo %name%

(個人的には2番目を使います)

.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 に答える