Batch file 批处理:连接变量和字符串以形成输出路径
我有一个批处理文件,用户在其中输入文件的路径,我从该路径提取文件名 我使用该文件名创建一个同名文件夹 在该文件夹中,我想创建一个log.txt文件,我在批处理文件中调用的进程可以将其日志消息写入该文件 代码如下:Batch file 批处理:连接变量和字符串以形成输出路径,batch-file,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 %
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
应该相对于批处理文件创建包含log.txt
的文件夹file
。路径中没有驱动器号
使用
%outputFolder%\log.txt
或%outputFolder%\log.txt“
时出现的错误是系统找不到路径。如果路径中有空格,请使用引号
someprocess -p1 blabla -p2 blabla -p3 "%outputFolder%" > "%outputFolder%\log.txt"
%%~dpni
将扩展变量以包括驱动器、路径和文件名。我使用dir
而不是someprocess
尝试了这个精确的脚本,效果很好。您键入的路径是否包含驱动器号且没有尾随斜杠?我编辑了我的问题。我想我明白了:文件夹是由进程创建的。创建文件夹的过程需要一点时间。当我做>folder/log.txt时,文件夹还没有被创建。。。可能就是这样。您无法重定向到尚不存在的文件夹中,因此您需要在重定向之前执行mkdir“%outputFolder%”操作,如>“%outputFolder%\log.txt”
。(在所有路径周围加引号,以避免可能出现的空格或特殊字符问题。)这不起作用。我仍然会犯同样的错误。路径中不能有空格,因为文件名中没有空格。我使用文件名作为foldername。很可能该文件夹不存在。“SomeProcess”做什么?它应该创建文件夹吗?如果没有,请执行MD“%OutFolder%”