bhffhzh 发表于 2017-8-3 09:15:57

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

本帖最后由 bhffhzh 于 2017-8-3 16:01 编辑

If $CMDLINE <> 0 Then
      If $CMDLINE = "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格式 :
FromAddress=abcd@163.com
SmtpServer=smtp.163.com
Username=abcd
Password=123456
ToAddress123456@qq.com
IPPort=25
Subject=有异常

tubaba 发表于 2017-8-3 10:52:12

检查配置文件的编码格式是否为ansi

chzj589 发表于 2017-8-3 11:04:52

回复 1# bhffhzh
If $CMDLINE <> 0 Then
        If $CMDLINE = "start" Then
这两个判断正确就可以读

bhffhzh 发表于 2017-8-3 11:44:28

回复 3# chzj589


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


说明判断应没错

bhffhzh 发表于 2017-8-3 11:47:36

回复 2# tubaba


    没错。是ansi

kk_lee69 发表于 2017-8-3 12:00:37

回复 5# bhffhzh
带参数运行的程序,无法读取配置文件

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

真怪那到底是哪邊無法讀取??

kk_lee69 发表于 2017-8-3 12:07:19

回复 6# kk_lee69

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

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

所以 麻煩請上完整的測試代碼

bhffhzh 发表于 2017-8-3 12:17:51

回复 7# kk_lee69



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


这两行就是读取配置文件,但读不出来,也就是我的主要问题。不知我的问题表达清楚没有。

bhffhzh 发表于 2017-8-3 12:19:08

带参数运行的程序,无法读取配置文件,如果真是这样,那就老火了。

h20040606 发表于 2017-8-3 13:21:20

本帖最后由 h20040606 于 2017-8-3 13:22 编辑

回复 9# bhffhzh


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

bhffhzh 发表于 2017-8-3 13:36:51

回复 10# h20040606


    啊,AUTOIT_3.3.6.1.exe 我这是个,我来换试试。

zghwelcome 发表于 2017-8-3 13:46:43

我用的版本 3.3.14.2
IniRead 函数只可以正常读取ANSI编码文件,如果是UTF8编码文件,会读取失败
而如果原来的INI文件是ANSI编码,用函数IniWrite写中文参数到文件时,可能会导致编码变为UTF8
所以再用函数IniRead读取时,读取失败
所以,我的做法是,先将INI文件转换一次编码为ANSI,再读取参数

chzj589 发表于 2017-8-3 14:00:04

本帖最后由 chzj589 于 2017-8-3 14:39 编辑

回复 11# bhffhzh
修改判断就行Local $CMDLINE=

Local $CMDLINE=
If $CMDLINE <> 0 Then
        If $CMDLINE = "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)

bhffhzh 发表于 2017-8-3 15:57:30

回复 13# chzj589


    貌似也不行。

yamakawa 发表于 2017-8-3 16:13:20

回复 13# chzj589


    {:face (303):}$cmdline是内置变量,正常情况不能去动的
楼主问题,个人觉得也是因为au3版本太旧了。。。在我这里正常运行
页: [1] 2
查看完整版本: [已解决]带参数运行的程序,无法读取配置文件