批处理:连接变量和字符串以形成输出路径

时间:2016-06-30 11:49:58

标签: batch-file

我有一个批处理文件,用户输入文件的路径,然后从路径中提取文件名。

我使用该文件名创建一个同名的文件夹。

在该文件夹中,我想创建一个log.txt文件,我在批处理文件中调用的进程可以将其日志消息写入。

以下是代码:

set /p pathFoFile="Enter path fo file: "
FOR %%i IN ("%pathFoFile%") DO (
    set outputFolder=%%~ni
)

someprocess -p1 blabla -p2 blabla -p3 %outputFolder% > %outputFolder%\log.txt

最后一部分%outputFolder%\log.txt似乎是问题所在,因为当我刚放> log.txt

时它才有效

然而,当我回应这个:

echo %outputFolder%\log.txt

它打印正确的路径。

如何使用foldername并创建此log.txt文件?

修改

我得到的路径可能如下:

..\some\folder\thefile.egf

或只是

thefile.egf

或绝对路径。

我提取

thefile

并想致电:

someprocess -p1 blabla -p2 blabla -p3 thefile > thefile\log.txt

应该相对于批处理文件创建包含thefile的文件夹log.txt。路径中没有驱动器号。

使用%outputFolder%\log.txt"%outputFolder%\log.txt"时出现的错误是系统无法找到路径。

2 个答案:

答案 0 :(得分:1)

如果路径中有空格,请使用引号。

someprocess -p1 blabla -p2 blabla -p3 "%outputFolder%" > "%outputFolder%\log.txt"

答案 1 :(得分:0)

%%~dpni会扩展变量以包含驱动器,路径和文件名。