Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.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 写入批处理文件以重复包含%PATH%的段落时出现问题_Batch File - Fatal编程技术网

Batch file 写入批处理文件以重复包含%PATH%的段落时出现问题

Batch file 写入批处理文件以重复包含%PATH%的段落时出现问题,batch-file,Batch File,我已经编写了下面的批处理文件,该文件将把100个段落写入.bat文件,并对引用的文件名进行增量编号更改 for /l %%N in (1 5 500) do ( echo cd /D "C:\batch" echo set PATH=C:\batch; &PATH% echo echo Simulation 'g=0.00%%N.pre' started... echo call %SOLVERQSP%-fp 1 -nt 3 ^ "C:\batch\0.00%%N.pre" > "

我已经编写了下面的批处理文件,该文件将把100个段落写入.bat文件,并对引用的文件名进行增量编号更改

for /l %%N in (1 5 500) do (
echo cd /D "C:\batch"
echo set PATH=C:\batch; &PATH%
echo echo Simulation 'g=0.00%%N.pre' started...
echo call %SOLVERQSP%-fp 1 -nt 3 ^
"C:\batch\0.00%%N.pre" > "C:\batch\g=0.00%%N.out"
echo echo Simulation 'g=0.00%%N' finished...
echo echo.

问题是当存在%PATH%和%SOLVERQSP%命令时,批处理文件没有创建。如果我删除这些,脚本运行良好。任何关于我哪里出了问题或我如何避免这一点的建议,只需将它们加倍以避开
%

echo set PATH=C:\batch;%%PATH%%

您应该使用一些引号,避免在您的案例中使用插入符号

for /l %%N in (1 5 500) do (
  echo cd /D "C:\batch"
  echo set "PATH=C:\batch; %PATH%"
  echo echo Simulation 'g=0.00%%N.pre' started...
  echo call %%SOLVERQSP%%-fp 1 -nt 3 "C:\batch\0.00%%N.pre" > "C:\batch\g=0.00%%N.out"
  echo echo Simulation 'g=0.00%%N' finished...
  echo echo.
)

&PATH%
只是一个输入错误吗?另外,您是否在一行上尝试了
echo调用%SOLVERQSP%…
命令,即没有
^
字符?我不知道
%SOLVERQSP%
做什么,但您真的需要为每次迭代更改目录和设置
路径吗?echo只是为了演示,还是尝试将输出重定向到新的批处理文件?这样就不会收到错误消息?确保将
ECHO设置为打开
,以查看任何错误消息。缺少引号和语法错误(如
&PATH%
)应该亮起,但可能所有内容都被解释为要回显的字符串。尽管如此,即使没有错误,您也应该在这里发布输出。这主意不错,但它会失败,因为它会扩展为零<代码>^%PATH^%
试图展开
%PATH^%
,这应该是未定义的。@jeb它在命令行上使用插入符号工作,在批处理文件中需要双-
%
。@marapt-是,但代码似乎是批处理文件。即使在命令行上,它也不是很稳定,因为它还会查看是否存在变量
path^
,并且只有在未定义的情况下,它才会输出
%path%
@jeb,这就是我测试和更新答案的原因。关于
path^
在命令行中的精彩内容!