【已解决】配置文件直接写宏如何实现
本帖最后由 wsclon 于 2016-1-8 15:16 编辑需求:想按日期生成日志文件
脚本内容:
Const $Config_File="conf.ini"
Const $Log_File_ini=IniRead($Config_File,"config","Log_File","")
Const $Log_File_script="Log_"&@YEAR&@MON&@MDAY&"_script.log"
MsgBox(0,"$Log_File_script",$Log_File_script)
MsgBox(0,"$Log_File_ini",$Log_File_ini)
FileWriteLine($Log_File_ini,"ini")
FileWriteLine($Log_File_script,"script")
conf.ini内容:
Log_File="Log_"&@YEAR&@MON&@MDAY&"_ini.log"
通过脚本生成自然是没有问题,但是在ini直接写宏怎么都不对,请赐教! 完全没有听明白楼主在说什么,想要什么结果,请您直接说出你的原始需求。Const $Config_File="conf.ini"
Const $Log_File_ini=IniRead($Config_File,"config","Log_File","")
Const $Log_File_script="Log_"&@YEAR&@MON&@MDAY&"_script.log"
;~ MsgBox(0,"$Log_File_script",$Log_File_script)
;~ MsgBox(0,"$Log_File_ini",$Log_File_ini)
IniWrite($Config_File,"config","Log_File",$Log_File_script)
FileWriteLine($Log_File_script,"ini")
FileWriteLine($Log_File_script,"script") 真不知道是我没表达对,还是你理解不好。
就是想在ini配置文件里写上@YEAR @MON @MDAY等宏。 每天的日志文件分开。我把代码改改你运行下就明白了。
脚本内容Const $Config_File="conf.ini"
Const $Log_File_ini=IniRead($Config_File,"config","Log_File","")
FileWriteLine($Log_File_ini,"ini")配置文件conf.ini内容
Log_File="Log_"&@YEAR&@MON&@MDAY&"_ini.log" 本帖最后由 fuldho 于 2016-1-4 08:29 编辑
楼主的意思很难理解,
是不是读取$Config_File,"config","Log_File","" 键值,再插入时间宏,保存在原键值中。 Const $Config_File="conf.ini"
Const $Log_File_ini=IniRead($Config_File,"config","Log_File","")
;FileWriteLine($Log_File_ini,"ini")
;追加到该键值未
IniWrite($Config_File,"config","Log_File",$Log_File_ini & " _"& @YEAR & @MON & @MDAY)
;另插入一行
IniWrite($Config_File,"config","new",@YEAR & @MON & @MDAY)回复 4# fuldho 本帖最后由 luren666 于 2016-1-5 00:11 编辑
真替楼主着急,已经跟您说了,说出您的原始需要,结果还是说的不明不白,别人不是您肚子里的蛔虫,您不描述清楚,别人是不会知道您想要干嘛的。(猜测您是想程序一下直在后台运行,程序运行过程中会生成日志文件,每天的日志文件分开保存为不同的文件。如果猜对了,下面的代码也许可以帮助您。)#include <File.au3>
#include <Date.au3>
$day = @MDAY
$sLogPath=@ScriptDir
$LogFile = FileOpen($sLogPath & "\" & @MON & "月" & @MDAY & "日" & ".txt",1+8)
OnAutoItExitRegister("Onexit" )
MemoWrite("程序启动")
While 1
If $day <> @MDAY Then
MemoWrite("又是一天过去了。")
FileClose($sLogPath & "\" & @MON & "月" & $day & "日" & ".txt")
$LogFile = FileOpen($sLogPath & "\" & @MON & "月" & @MDAY & "日" & ".txt",1+8)
$day = @MDAY
EndIf
Example()
Sleep(3000)
WEnd
Func Example()
MemoWrite( "工作函数")
EndFunc
Func MemoWrite($message="")
FileWriteLine($LogFile, _NowCalc() & " " & $message & @CRLF)
EndFunc
Func Onexit()
MemoWrite("程序正常退出")
EndFunc 不知道LZ是不是想这样?
Const $Config_File = "config.ini"
Const $Log_File_ini = IniRead($Config_File, "config", "Log_File", "")
MsgBox(0, "$Log_File_ini", "Log_" & Execute($Log_File_ini) & "_ini.log")
ini文件如下:
Log_File=@YEAR&@MON&@MDAY 就是楼上说的这样,我想按日期生成日志,比如今天是log_20160105.log明天是log_20160106.log。
但是不是在脚本里定义死年月日,这个我能做。
我想的是年月日的定义在配置文件里可以改。
楼上应该理解到我意思了,但是楼上的既然不行。 还是不明白楼主的意思,好吧,我理解能力差。 本帖最后由 luren666 于 2016-1-5 23:10 编辑
哦,我好像明白楼主的意思了,楼主的意思是在配置文件里面写上日志的命名规则,比如写:
Log_File="Log_"&@YEAR&@MON&@MDAY&"_ini.log"这样的话,他希望脚本生成的日志文件名是"Log_"开头,中间是"年月日",并以"_ini.log"结尾的文件名。假如写:Log_File=@YEAR&@MON&@MDAY & ".log" 那么最终生成的日志文件就是以“年月日.log”命名。他的意思就是定义一个命名规则,程序按照他的命令规格来生成日志文件。像"@year"这种会被程序自动识别成"宏",也就是替换成当前的年份的意思。不知道我猜的对不对?其实使用Execute 可以实现这个效果。楼主测试一下下面的代码就知道了,不过配置文件需要特殊的写法。$filename = IniRead("conf.ini","config","Log_file",@YEAR & @MON & @MDAY & ".log")
ConsoleWrite($filename & @CRLF)
$x = Execute($filename)
ConsoleWrite($x & @CRLF)配置文件
Log_File="'Log_'& @YEAR & @MON & @MDAY & '_ini.log'" 楼主的意思好像是上楼说的 本帖最后由 luren666 于 2016-1-5 23:16 编辑
楼主好像太吝啬自己的文字了,我作为一个旁观者既然能把问题描述清楚,楼主做为提问的人,就更应该能说清楚。不要吝啬多打几个字,让我们其它帮忙的人来猜您的意思。其实7楼的水木子版主已经提出使用 execute 的方法了,楼主可果仔细研究,应该可以找到解决方案的。 果然通过execute运算一次就解决了,就是要注意引号的嵌套。 好像最近我在纠结这个问题 记录下
页:
[1]