免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1984 | 回复: 0
打印 上一主题 下一主题

请问怎样将环境变量传递给windows的CMD? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-03-21 20:41 |只看该作者 |倒序浏览
我在windows环境下,用perl执行oracle的sqlplus命令,能够执行:
system "
        sqlplus \"system/oracle\@PROD\"  \<\<EOF
        select count(*) from dba_users;
EOF
";

然后,我想用sqlplus命令,执行一个SQL文件,这个SQL文件会将输出spool到这个目录:spool ${MY_SPOOL_LOG}

结果,我这样执行之后,SQL文件目录下多了一个${MY_SPOOL+LOG}文件,而不是我期望的那样,生成我指定的文件名:
my $file = "general_sql/0010_version.sql";
$ENV{MY_SPOOL_LOG} = "oracle_sql_spool/0010_version.log";
### %ENV

system "sqlplus \"system/oracle\@PROD\" \@$file";

0010_version.sql的内容是这样的:
spool ${MY_SPOOL_LOG}
column PRODUCT format a45
column VERSION format a15
column STATUS format a18
SELECT PRODUCT,version,status  FROM product_component_version;
spool off
exit;


看起来,是$ENV{MY_SPOOL_LOG} = "oracle_sql_spool/0010_version.log"; 这条语句,并没有把环境变量传递给system命令。
我用### %ENV,是能够看到$ENV{MY_SPOOL_LOG}变量的内容的:
###         MY_SPOOL_LOG => 'oracle_sql_spool/0010_version.log',


能够有办法将$ENV{MY_SPOOL_LOG}传递给system执行吗?

谢谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP