如何在批处理中连接两个变量

时间:2014-01-22 04:23:35

标签: batch-file

这里我生成了两个日志文件

alertloglocation.log

  

d:\ APP2 \ DIAG \ RDBMS \ ORCL \ ORCL \微量

dbname.log

  

ORCL

我的代码

for /f "tokens=* delims=" %%A in (alertloglocation.log) do set alertlogloc=%%A

for /f "tokens=* delims=" %%A in (dbname.log) do set dbnm=%%A

echo %alertlogloc% \alert_%dbnm%.log >output.log

output.log

  

d:\ APP2 \ DIAG \ RDBMS \ ORCL \ ORCL \微量

现在我有两个变量alertlogloc和dbname。

实际上我希望输出为:

  

d:\ APP2 \ DIAG \ RDBMS \ ORCL \ ORCL \跟踪\ alert_orcl.log

1 个答案:

答案 0 :(得分:0)

您问题中的文件和代码无法提供您声明的结果。它产生d:\app2\diag\rdbms\orcl\orcl\trace \alert_orcl.log,带有尾随空格。

删除%alertlogloc%之后的空间,因为unclemeat建议,一切都应该没问题。如果您还想删除尾随空格,请在重定向之前删除空格。当您拥有tokens=*时,无需delims=。我喜欢在SET分配中使用引号来确保我没有不需要的尾随空格。

for /f "delims=" %%A in (alertloglocation.log) do set "alertlogloc=%%A"

for /f "delims=" %%A in (dbname.log) do set "dbnm=%%A"

echo %alertlogloc%\alert_%dbnm%.log>output.log

只要您知道每个文件只有一行,那么您可以简化:

for /f "delims=" %%A in (alertloglocation.log) do for /f "delims=" %%B in (dbname.log) do echo %%A\alert_%%B.log>output.log