我有一个perl脚本,用于更新我的网站的awstats日志。如果我只是将它粘贴在cmd(Windows)中,该脚本工作正常,但是当我将其粘贴到批处理文件中时,它会混淆生成的文件的格式(它们应该以当前日期/时间为前缀)。代码是:
perl C:\PROGRA~2\AWStats\tools\awstats_buildstaticpages.pl -config=mywebsite -update -awstatsprog=C:\PROGRA~2\AWStats\wwwroot\cgi-bin\awstats.pl -dir=C:\myfolder\stats\reports -builddate=%YYYY%MM -buildpdf=C:\PROGRA~2\HTMLDOC\ghtmldoc.exe -staticlinksext=asp`
生成的结果文件是mysite。 201008 .asp如果我将其粘贴到cmd并执行BUT在具有相同脚本的批处理文件中,我生成的文件是mysite。 MM 的.asp。
知道为什么会这样吗?
答案 0 :(得分:4)
问题是由%YYYY%MM
引起的。
“%”是批处理文件中的特殊符号。你需要通过加倍来逃避它:%%YYYY%%MM
。
答案 1 :(得分:0)
您似乎必须转义'%'字符。
答案 2 :(得分:0)
我在猜测的%YYYY%
上执行变量替换的命令shell没有在你的环境中定义,因此它将空字符串替换为“变量”。
不幸的是,Windows shell中没有不透明的引号。