我有一个构建路径的批处理文件,然后找不到路径。虽然如果我从命令行尝试完全相同的路径,它可以工作。这里有一些笨重的代码来说明我的问题:
C:\batch>SET JAVA="I:\"
C:\batch>SET JAVA-LOCAL="J:\raw\java\"
C:\batch>SET CF005="V:\"
C:\batch>SET CF006="U:\"
C:\batch>SET CF005-local="J:\raw\cf\005\"
C:\batch>SET CF006-local="J:\raw\cf\006\"
C:\batch>SET CF-local="J:\raw\cf\"
C:\batch>SET REPORTS="J:\"
C:\batch>c:\cygwin\bin\grep -v "#" %CF006-local%ex%IISDT%.log > %CF-local%ex%IISDT%-temp.log
/ usr / bin / grep:J:\ raw \ cf \ 006 \ ex150209.log:没有这样的文件或目录
C:\batch>ls J:\raw\cf\006\ex150209.log
J:\raw\cf\006\ex150209.log
因此,您可以看到该文件最初无法找到,但是当我从命令行使用' ls'时,它似乎突然可用。提前谢谢!
答案 0 :(得分:1)
不知道您对%IISDT%
的定义,而%CF006-local%ex
的结果是"J:\raw\cf\006\"ex
;类似%CF-local%ex
的结果为"J:\raw\cf\"ex
。无法成为文件名的有效基础。
您的set
命令应如下所示:
SET "JAVA=I:\"
SET "JAVA-LOCAL=J:\raw\java\"
SET "CF005=V:\"
:: and so on...
修改:用于调试目的
set
来显示环境变量; _
下划线:
然后set _
仅显示那些; echo on
echo
示例(仅^
注释>
转发echo
重定向器):
echo -v "#" %CF006-local%ex%IISDT%.log ^> %CF-local%ex%IISDT%-temp.log
资源: