Windows路径仅在批处理上下文中失效

时间:2015-02-10 22:13:13

标签: windows batch-file

我有一个构建路径的批处理文件,然后找不到路径。虽然如果我从命令行尝试完全相同的路径,它可以工作。这里有一些笨重的代码来说明我的问题:

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'时,它似乎突然可用。提前谢谢!

1 个答案:

答案 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

资源: