2015-04-28 62 views
2

我想說:如果此日誌文件已存在於此文件夾中(例如abc.log已存在),請告訴用戶它存在並創建新的日誌文件爲RED_abc.log。批處理指定一個新變量添加字符到一個新變量

這就是我得到的。

set /p answer=1. Please type in a name 
if exist %answer%.log (
echo The log file will be called RED_%answer1%.log 
set %answer%=RED_%answer% 
echo %answer%>>%answer%.log 
) 

它不創建新的日誌文件,而是將文本放在舊的日誌文件中。

回答

2

括號表示您的代碼是一行。在讀取行時擴展%var%。在最後一行之前關閉括號。然後%answer%將包含舊名稱(如果它不存在)或新名稱(如果它存在)。

要在一行上使用%var%時,您必須打開setlocal enabledelayedexpansion模式,並通過!var!語法引用您希望在運行時展開的模式。見SetLocal /?

set /p answer=1. Please type in a name 
if exist %answer%.log (
echo The log file will be called RED_%answer1%.log 
set %answer%=RED_%answer% 
) 
echo %answer%>>%answer%.log 

假設他們輸入貓

如果日誌存在%的答案%將被設置爲Red_Cat。但是,直到讀取新行後纔會更改。括號後,它將發送Cat或Red_Cat到同名文件。

setlocal enabledelayedexpansion 
set /p answer=1. Please type in a name 
if exist %answer%.log (
echo The log file will be called RED_%answer1%.log 
set %answer%=RED_%answer% 
echo !answer!>>!answer!.log 
) 

請注意第二行。

+0

我做得稍微不同。 我改了一行:set%answer%= RED_%answer% To:set answer = RED_!answer! echo%answer1%>>%answer1%.log –

相關問題