Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 批处理:连接变量和字符串以形成输出路径_Batch File - Fatal编程技术网

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

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 %

我有一个批处理文件,用户在其中输入文件的路径,我从该路径提取文件名

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

在该文件夹中,我想创建一个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
应该相对于批处理文件创建包含
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%”