批量将添加了字符的新变量分配给新变量

时间:2015-04-28 22:04:19

标签: batch-file

我试图说:如果此文件夹中已存在此日志文件(例如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
)

它不会创建新的日志文件,而是将文本放在旧的日志文件中。

1 个答案:

答案 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
)

注意最后一行。