我有以下批处理文件:
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\]=\^'\1\^'\"\/>/">> "%file_name%")
echo ^</ListOfPropertySetEx^>>> "%file_name%"
它不能处理批处理文件的 for 部分:系统找不到指定的文件。我已经正确安装了C:\ cygwin \ bin \ grep [sed],以及这个批处理文件在另一台机器上运行的有趣之处。我错过了什么?提前谢谢。
答案 0 :(得分:0)
Batch非常具体,它接受if
和for
语句中的有效语法。将您的for
循环更改为以下样式...
for /f "usebackq delims=|" %%f in (`dir /B /ON "%~1\SI0002\Workflow Process*"`) do (
echo dir %%f
)
具体来说,将(
直接放在do
指令之后,将)
放在循环内容行之后的新行上。
我不知道这是否会使你的脚本有效,但它可以让你更进一步。