找回密码
 加入
搜索
查看: 5656|回复: 17

[系统综合] [已解决]带参数运行的程序,无法读取配置文件

 火.. [复制链接]
发表于 2017-8-3 09:15:57 | 显示全部楼层 |阅读模式
本帖最后由 bhffhzh 于 2017-8-3 16:01 编辑
If $CMDLINE[0] <> 0 Then
        If $CMDLINE[1] = "start" Then
                $strConfigINI = @ScriptDir & "\IPMonConfig.ini"
                $SmtpServer = IniRead($strConfigINI, "MailConfig", "SmtpServer", "")  ; 无法读取 
                $FromName = @IPAddress1 ; 名字来自谁是电子邮件的发送   ;可以读
                $Body = "服务器被重启,请注意检查!"    ;可以读
        Else
                MsgBox(16, "错误!", "无效参数!")
                Exit
        EndIf

Else
        MsgBox(16, "错误!", "本程序需要带参数运行")
        Exit
EndIf


MsgBox(0, 0, $SmtpServer & " " & $FromName & " " & $Body)
配置文件IPMonConfig.ini格式 :
[MailConfig]
FromAddress=abcd@163.com
SmtpServer=smtp.163.com
Username=abcd
Password=123456
ToAddress123456@qq.com
IPPort=25
Subject=有异常
发表于 2017-8-3 10:52:12 | 显示全部楼层
检查配置文件的编码格式是否为ansi
发表于 2017-8-3 11:04:52 | 显示全部楼层
回复 1# bhffhzh
If $CMDLINE[0] <> 0 Then
        If $CMDLINE[1] = "start" Then
这两个判断正确就可以读
 楼主| 发表于 2017-8-3 11:44:28 | 显示全部楼层
回复 3# chzj589


                    $FromName = @IPAddress1 ; 名字来自谁是电子邮件的发送   ;可以读
                $Body = "服务器被重启,请注意检查!"    ;可以读


说明判断应没错
 楼主| 发表于 2017-8-3 11:47:36 | 显示全部楼层
回复 2# tubaba


    没错。是ansi
发表于 2017-8-3 12:00:37 | 显示全部楼层
回复 5# bhffhzh
带参数运行的程序,无法读取配置文件

然後 問題說明 又都是可以讀取..........

真怪  那到底是哪邊無法讀取??
发表于 2017-8-3 12:07:19 | 显示全部楼层
回复 6# kk_lee69

$FromName = @IPAddress1 ; 名字来自谁是电子邮件的发送   ;可以读

@IPAddress1  明明就是 系統變數  怎麼會是讀取來的??

所以 麻煩請上完整的測試代碼
 楼主| 发表于 2017-8-3 12:17:51 | 显示全部楼层
回复 7# kk_lee69



                $strConfigINI = @ScriptDir & "\IPMonConfig.ini"
                $SmtpServer = IniRead($strConfigINI, "MailConfig", "SmtpServer", "")  


这两行就是读取配置文件,但读不出来,也就是我的主要问题。不知我的问题表达清楚没有。
 楼主| 发表于 2017-8-3 12:19:08 | 显示全部楼层
带参数运行的程序,无法读取配置文件  ,如果真是这样,那就老火了。
发表于 2017-8-3 13:21:20 | 显示全部楼层
本帖最后由 h20040606 于 2017-8-3 13:22 编辑

回复 9# bhffhzh


    我试验了,没有问题啊。我用的3.3.12.0

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2017-8-3 13:36:51 | 显示全部楼层
回复 10# h20040606


    啊,AUTOIT_3.3.6.1.exe 我这是个,我来换试试。
发表于 2017-8-3 13:46:43 | 显示全部楼层
我用的版本 3.3.14.2
IniRead 函数只可以正常读取ANSI编码文件,如果是UTF8编码文件,会读取失败
而如果原来的INI文件是ANSI编码,用函数IniWrite写中文参数到文件时,可能会导致编码变为UTF8
所以再用函数IniRead读取时,读取失败
所以,我的做法是,先将INI文件转换一次编码为ANSI,再读取参数
发表于 2017-8-3 14:00:04 | 显示全部楼层
本帖最后由 chzj589 于 2017-8-3 14:39 编辑

回复 11# bhffhzh
修改判断就行Local $CMDLINE[3]=[1,'start',2]

Local $CMDLINE[3]=[1,'start',2]
If $CMDLINE[0] <> 0 Then
        If $CMDLINE[1] = "start" Then
                $strConfigINI = @ScriptDir & "\IPMonConfig.ini"
                $SmtpServer = IniRead($strConfigINI, "MailConfig", "SmtpServer", "") ; 无法读取
                $FromName = @IPAddress1 ; 名字来自谁是电子邮件的发送   ;可以读
                $Body = "服务器被重启,请注意检查!" ;可以读
        Else
                MsgBox(16, "错误!", "无效参数!")
                Exit
        EndIf
Else
        MsgBox(16, "错误!", "本程序需要带参数运行")
        Exit
EndIf
MsgBox(0, 0, $SmtpServer &  @CRLF & $FromName & @CRLF& $Body)
 楼主| 发表于 2017-8-3 15:57:30 | 显示全部楼层
回复 13# chzj589


    貌似也不行。
发表于 2017-8-3 16:13:20 | 显示全部楼层
回复 13# chzj589


    $cmdline是内置变量,正常情况不能去动的
楼主问题,个人觉得也是因为au3版本太旧了。。。在我这里正常运行
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-12-24 10:27 , Processed in 0.089274 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表