我试图说:如果此文件夹中已存在此日志文件(例如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
)
它不会创建新的日志文件,而是将文本放在旧的日志文件中。
答案 0 :(得分:2)
括号表示您的代码是一行。读取行时会展开%var%
。只需在最后一行之前关闭括号即可。然后,%answer%
将包含oldname(如果它不存在)或新名称(如果存在)。
要在更改时在一行上使用%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
假设他们输入了猫
如果日志存在,则%answer%将设置为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
)
注意最后一行。