我有一个批处理文件,用户输入一个文件路径,我从中提取文件名。
我使用该文件名创建一个同名的文件夹。
在该文件夹中,我想创建一个log.txt文件,让我在批处理文件中调用的进程可以将其日志消息写入其中。
以下是代码:
最后一个部分
或者只是
或者是绝对路径。
我提取了。
我使用该文件名创建一个同名的文件夹。
在该文件夹中,我想创建一个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
它打印了正确的路径。
我如何使用文件夹名称并创建log.txt文件?
编辑
我得到的路径可能是这样的:
..\some\folder\thefile.egf
或者只是
thefile.egf
或者是绝对路径。
我提取了。
thefile
and would like to call:
someprocess -p1 blabla -p2 blabla -p3 thefile > thefile\log.txt
要创建一个包含log.txt
的thefile
文件夹,相对于批处理文件。路径中没有驱动器号。
当使用%outputFolder%\log.txt
或"%outputFolder%\log.txt"
时,我收到的错误是系统找不到路径。
dir
替换someprocess
运行了这个脚本,它可以正常工作。你输入的路径是否包含驱动器号并且没有斜杠? - leetibbett> "%outputFolder%\log.txt"
这样重定向之前,你需要执行mkdir "%outputFolder%"
命令创建该文件夹。(在所有路径周围加上引号以避免潜在的空格或特殊字符问题。) - aschipfl