批处理 - 系统找不到指定的文件

时间:2015-04-30 11:50:53

标签: windows batch-file cmd

我有以下批处理文件:

set file_name=workflow.xml

echo ^<?xml version="1.0" encoding="UTF-8"?^>> "%file_name%"
echo ^<?Siebel-Property-Set EscapeNames="true"?^>>> "%file_name%"
echo ^<ListOfPropertySetEx^>>> "%file_name%"

for /f "usebackq delims=|" %%f in (`dir /B /ON "%~1\SI0002\Workflow Process*"`) do 
(C:\cygwin\bin\grep -m1 -e "   PROCESS_NAME=\".*^\"" "%~1\SI0002\%%f" |  
C:\cygwin\bin\sed  "s/.*   PROCESS_NAME=\x22\(.*\)\x22/ <PropertySet 
FlowSearchSpec=\"\[Process Name\]=\^&apos;\1\^&apos;\"\/>/">> "%file_name%")

echo ^</ListOfPropertySetEx^>>> "%file_name%"

它不能处理批处理文件的 for 部分:系统找不到指定的文件。我已经正确安装了C:\ cygwin \ bin \ grep [sed],以及这个批处理文件在另一台机器上运行的有趣之处。我错过了什么?提前谢谢。

1 个答案:

答案 0 :(得分:0)

Batch非常具体,它接受iffor语句中的有效语法。将您的for循环更改为以下样式...

for /f "usebackq delims=|" %%f in (`dir /B /ON "%~1\SI0002\Workflow Process*"`) do (
  echo dir %%f
)

具体来说,将(直接放在do指令之后,将)放在循环内容行之后的新行上。

我不知道这是否会使你的脚本有效,但它可以让你更进一步。