2014-09-11 390 views
0

我试图从Windows命令行启动IDL程序。 可以说我有以下程序:在Windows命令行上使用IDL

PRO hello 
print, "Hello, I am a IDL script!" 
a=bytarr(100,200) 
outname='g:\testimage.tif' 
WRITE_TIFF, outname, a 
END 

我想用IDL执行该程序的命令行-e .RUN如下:

C:\Users\lein_pa>idl -e ".RUN G:/05_Software/01_IDL/IDLWorkspace/Default/hello.pro" 
IDL Version 8.2, Microsoft Windows (Win32 x86_64 m64). (c) 2012, Exelis Visual Information Solutions, Inc. 
Installation number: xxxxx. 
Licensed for use by: xxx 

% Compiled module:HELLO. 
C:\Users\lein_pa> 

正如你可以看到HELLO.pro会被编译,但没有消息“你好,我是一个IDL脚本!”出现在shell上,并且testimage.tif不写入磁盘。当我从IDL IDE启动这个程序时,一切正常。

可以请别人帮我吗?我究竟做错了什么?

回答

1

你可以用相同的名字保留该文件,但通过注释掉PRO helloEND将其更改为批处理文件,因为例程中的所有内容都可以轻松地从命令行运行。

然后开始的一切,尝试:

C:\Users\lein_pa>idl -e G:/05_Software/01_IDL/IDLWorkspace/Default/hello.pro 

在基于Unix的系统,这将启动IDL,并立即运行批处理文件hello.pro。如果您需要基于Windows的机器的双引号,则相应地添加这些引号。请注意,如果您将此例程更复杂但将其保存为批处理文件,那么请谨慎使用循环,因为您需要在行尾使用$& $将它们包含在循环中。我非常确定可以在启动时运行实际的程序/函数,但如果必要的话,在启动后输入函数名称也很容易。通常,人们希望使用启动批处理例程来设置您希望在IDL中使用或通常使用的个人偏好/默认值。

+0

这是个好主意,非常感谢。但hello.pro当然只是一个简单的示例程序。我想从命令行调用已经存在的非常复杂的程序,这些程序在结构或编码方面不能改变。 – KingLui81 2014-09-12 06:47:01

+0

您的意思是说,当您首次启动IDL或希望能够在命令行上从IDL之外运行IDL例程时,您想要运行一些例程吗?前者非常简单,只需在一个简单的bash例程(如hello.pro)中调用它们,或者从IDL中的命令行中调用它们。后者是可能的,但可能有点棘手。你看过:[IDL启动的命令行选项](http://www.exelisvis.com/docs/command_line_options_for.html)或[执行SAVE文件](http://www.exelisvis.com/docs/) Executing_SAVE_Files.html)来查看这些选项是否有效? – 2014-09-12 12:49:17

+0

感谢您的链接 - 他们帮助我找出错误!我意识到这个问题是idl调用中的一个小差异。尽管基于unix的系统使用idl,但windows虚拟机使用idlrt从命令行运行程序。 – KingLui81 2014-09-22 16:47:16