📄 envisavebatch_401.bak
字号:
;
;
;
;非自动生成功能部分,后添加功能
;
;
;
;
;----------------------------------
;打开关闭Envi所涉及到的函数
;--------------------
;判断ENVI的版本是否正确:4.3及以上版本正确
FUNCTION ENVIVersionRight_401
COMPILE_OPT idl2
otRight = 0
FORWARD_FUNCTION GetENVIPath_401 ;得到ENVI当前路径
enviPath = GetENVIPath_401()
IF enviPath NE '' THEN otRight = 1
RETURN, otRight
END
;--------------------
;得到ENVI的当前路径:4.3及4.4路径
FUNCTION GetENVIPath_401
COMPILE_OPT idl2
enviPath = ''
FORWARD_FUNCTION GetIDLPath_401 ;得到IDL当前路径
curIDL = GetIDLPath_401() ;返回IDL当前路径
CD, curIDL + '\products' ;进入IDL系统目录下的products文件夹里
valid43 = 0 & valid44 = 0
curPath = FILE_SEARCH('envi43');查找products文件夹底下是否存在envi43,如果有则返回其完整的路径,其版本为ENVI4.3
IF curPath NE '' THEN valid43 = 1
curPath = FILE_SEARCH('envi44');查找products文件夹底下是否存在envi44,如果有则返回其完整的路径,其版本为ENVI4.4
IF curPath NE '' THEN valid44 = 1
IF valid43 EQ 1 THEN BEGIN
enviPath = curIDL + '\products\envi43';返回ENVI4.3版本的完整路径
ENDIF ELSE IF valid44 EQ 1 THEN BEGIN
enviPath = curIDL + '\products\envi44';返回ENVI4.4版本的完整路径
ENDIF
RETURN, enviPath
END
;--------------------
;;得到IDL的当前路径
FUNCTION GetIDLPath_401
COMPILE_OPT idl2
curPath = !DIR
RETURN, curPath
END
;--------------------
;退出系统
PRO System_LogOff_401
ENVI_Batch_LogOff_401 ;关闭ENVI
ResetExitOnOff_401, 'Nature'
END
;--------------------
;关闭ENVI批处理
PRO ENVI_Batch_LogOff_401
ENVI_Batch_Exit
END
;--------------------
;设置ENVI离开时IDL处理
PRO ResetExitOnOff_401, inType
COMPILE_OPT idl2
COMMON ENVIIDL, ExistOnOff
;获取envi.cfg的路径
FORWARD_FUNCTION GetENVIPath_401
enviPath = GetENVIPath_401()
IF enviPath EQ '' THEN RETURN
cfgPath = enviPath + '\menu\envi.cfg'
cfgPathBp = enviPath + '\menu\envi.cfgbp'
cfgPathNew = enviPath + '\menu\envi.cfgNew'
;备份envi.cfg文件
IF inType EQ 'Nature' THEN BEGIN
File_Copy, cfgPathBp, cfgPath, /OVERWRITE
File_Delete, cfgPathBp, /ALLOW_NONEXISTENT
RETURN
ENDIF
File_Copy, cfgPath, cfgPathBp, /OVERWRITE
;open cfg and change state
OPENR, lun, cfgPath, /GET_LUN
OPENW, lunNew, cfgPathNew, /GET_LUN, width = 150
;open for 'No'
strLine = ''
WHILE ~EOF(lun) DO BEGIN
READF, lun, strLine
bMatch = StrMatch(strLine, 'exit idl on exit from envi')
IF bMatch EQ 1 THEN BEGIN ;找到
IF inType EQ 'No' THEN BEGIN
PRINTF, lunNew, 'exit idl on exit from envi = no'
ENDIF ELSE IF inType EQ 'yes' THEN BEGIN
PRINTF, lunNew, 'exit idl on exit from envi = yes';退出ENVI
ENDIF
ENDIF ELSE BEGIN
PRINTF, lunNew, strLine
ENDELSE
ENDWHILE
FREE_LUN, lun, lunNew
CLOSE, lun, lunNew
File_Copy, cfgPathNew, cfgPath, /OVERWRITE
File_Delete, cfgPathNew, /ALLOW_NONEXISTENT
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -