2016-06-28 58 views
0
REM This is a sample code by me to illustrate my question 

@echo off 
:test 
Echo Welcome %username%! 
set /p T=Enter your text here 
echo %username% : %T% >>C:\Users\%username%\AppData\Local\Temp\xyz.txt 
goto :test 

以上是我的示例代碼,它可以幫助說明我的問題。BATCH - 防止輸入關鍵垃圾郵件

在上面的代碼中,一旦用戶輸入消息並按下回車鍵,消息就會被寫入文件中,但用戶可能會連續按下'Enter'鍵,這將導致相同的消息返回到文件。有什麼辦法可以防止這種情況發生?

謝謝!

+4

你應該顯示你的代碼,這將提供理解你的問題的可能性 – jeb

+0

@Jeb我已經添加了一個示例代碼,這將有助於說明我的問題。 –

回答

1

只需按下ENTER鍵在set /p保持變量不變。所以,你必須先清除它:

@echo off 
:test 
Echo Welcome %username%! 
set "T=" 
set /p T=Enter your text here 
echo %username% : %T% >>C:\Users\%username%\AppData\Local\Temp\xyz.txt 
goto :test 

,如果你不希望記錄的空項,使用Florians答案和替換
echo %username% : %T% ...
if not "%T%"=="" echo %username% : %T% ...
if defined T echo %username% : %T% ...

當然

你也可以預定其他的東西,如set T=user didn't enter text"

0
if not "%T%"=="" echo %username% : %T% >> xyz.txt 

更新:刪除()

+1

你需要在set/P之前放置'set'T ='',否則如果之前已經設置過一次'T'將不會爲空。並刪除括號!它可能是獨立工作的,但如果語句放置在括號內,它將不會工作... – aschipfl

+1

您的語法錯誤'IF not(「%T%==」「))'。工作,因爲括號是比較字符串的一部分,只要將它們刪除 – jeb