Что нового

Как указать директорию файла имеющего динамическую дату в названии.

A

at

Гость
Прошу подсказать, как правильно изменить директорию файла в скрипте. В имени каталога и в имени файла стоит дата. Путь к файлу: C:\061\G_1\Log1\2011.9.9\Dump2011.9.9.html

Код:
HotKeySet('8', '_Exit');8 - выход

$sSearchWord = 'Append'
$sFileName = @ScriptDir & '\Dump' & @YEAR & '.' & Number(@MON) & '.' & Number(@MDAY) & '.html'
$sText = FileRead($sFileName)
StringReplace($sText, $sSearchWord, '')
$iOldNum = @extended

$iStart = TimerInit()
While 1
    If TimerDiff($iStart) > 1000 Then ;проверка через 1 сек.9
        $sFileName = @ScriptDir & '\Dump' & @YEAR & '.' & Number(@MON) & '.' & Number(@MDAY) & '.html'
        If FileExists($sFileName) Then
            $sText = FileRead($sFileName)
            StringReplace($sText, $sSearchWord, '')
            $iNumNow = @extended
            $sText = ''
            If $iOldNum < $iNumNow Then
                Beep(500, 50)
                ToolTip('Кол-во слов ' & $sSearchWord & ' изменилось.' & @LF & 'Было: ' & _
                        $iOldNum & ', стало: ' & $iNumNow, 0, 0)
                $iOldNum = $iNumNow
                ;здесь можете делать то, что Вам надо.
            EndIf
        EndIf
        $iStart = TimerInit()
    EndIf
    Sleep(20)
WEnd

Func _Exit()
    Exit
EndFunc   ;==>_Exit


Сделал так, сомневаюсь.

Код:
$sFileName = 'C:\061\G_1\Log1\'& @YEAR & '.' & Number(@MON) & '.' & Number(@MDAY) & '\Dump' & @YEAR & '.' & Number(@MON) & '.' & Number(@MDAY) & '.html'
 

joiner

Модератор
Локальный модератор
Сообщения
3,557
Репутация
628
попробуй так
Код:
$sMon=  StringRegExpReplace  (@MON,"^0","","")
$sMday=  StringRegExpReplace  (@MDAY,"^0","","")
$sFileName = 'C:\061\G_1\Log1\' & @YEAR & "." &  $sMon & "." & $sMday  & "\Dump" & @YEAR  & "." & $sMon & "." & $sMday & ".html"
 

XpycT

Скриптер
Сообщения
380
Репутация
133
Код:
HotKeySet('8', '_Exit');8 - выход

Dim $iYEAR = Number(@YEAR), $iMON = Number(@MON), $iMDAY = Number(@MDAY)
$sDate = @YEAR & '.' & $iMON & '.' & $iMDAY

$sSearchWord = 'Append'
$sFileName = 'C:\061\G_1\Log1\'& $sDate & '\Dump' & $sDate & '.html'
$sText = FileRead($sFileName)
StringReplace($sText, $sSearchWord, '')
$iOldNum = @extended

$iStart = TimerInit()
While 1
    If TimerDiff($iStart) > 1000 Then ;проверка через 1 сек.9
        $sFileName = 'C:\061\G_1\Log1\'& $sDate & '\Dump' & $sDate & '.html'
        If FileExists($sFileName) Then
            $sText = FileRead($sFileName)
            StringReplace($sText, $sSearchWord, '')
            $iNumNow = @extended
            $sText = ''
            If $iOldNum < $iNumNow Then
                Beep(500, 50)
                ToolTip('Кол-во слов ' & $sSearchWord & ' изменилось.' & @LF & 'Было: ' & _
                        $iOldNum & ', стало: ' & $iNumNow, 0, 0)
                $iOldNum = $iNumNow
                ;здесь можете делать то, что Вам надо.
            EndIf
        EndIf
        $iStart = TimerInit()
    EndIf
    Sleep(20)
WEnd

Func _Exit()
    Exit
EndFunc   ;==>_Exit
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
XpycT,
А если день (месяц, год) изменился? Я бы так сделал:
Код:
Opt('MustDeclareVars', 1)
Opt('TrayMenuMode', 1)

Global $sFileName, $sSearchWord = 'Append', $iOldNum, $iStart, $sText, $iNumNow

HotKeySet('8', '_Exit');8 - выход

_Get_Path($sFileName)

If FileExists($sFileName) Then
	$sText = FileRead($sFileName)
	StringReplace($sText, $sSearchWord, '')
	$iOldNum = @extended
	$sText = ''
Else
	$iOldNum = 0
EndIf

$iStart = TimerInit()
While 1
	If TimerDiff($iStart) > 1000 Then ;проверка через 1 сек.
		_Get_Path($sFileName)
		If FileExists($sFileName) Then
			$sText = FileRead($sFileName)
			StringReplace($sText, $sSearchWord, '')
			$iNumNow = @extended
			$sText = ''
			If $iOldNum < $iNumNow Then
				Beep(500, 50)
				ToolTip('Кол-во слов ' & $sSearchWord & ' изменилось.' & @LF & 'Было: ' & _
						$iOldNum & ', стало: ' & $iNumNow, 0, 0)
				$iOldNum = $iNumNow
				;здесь можете делать то, что Вам надо.
			EndIf
		EndIf
		$iStart = TimerInit()
	EndIf
	Sleep(20)
WEnd

Func _Get_Path(ByRef $s_FilePath)
	$s_FilePath = 'C:\061\G_1\Log1\' & @YEAR & '.' & Number(@MON) & '.' & Number(@MDAY) & _
			'\Dump' & @YEAR & '.' & Number(@MON) & '.' & Number(@MDAY) & '.html'
	;или
	;$s_FilePath = @HomeDrive & '\061\G_1\Log1\' & @YEAR & '.' & Number(@MON) & '.' & Number(@MDAY) & _
	;		'\Dump' & @YEAR & '.' & Number(@MON) & '.' & Number(@MDAY) & '.html'
EndFunc   ;==>_Get_Path

Func _Exit()
	Exit
EndFunc   ;==>_Exit
 

joiner

Модератор
Локальный модератор
Сообщения
3,557
Репутация
628
может я не так понял. но временами создается файл(может каждый день) в папке , которая имеет дату в названии и файлом, который тоже имеет дату создания в имени. из расчета что номер месяца или дня создается без нуля в начале . я решил это через
Код:
StringRegExpReplace

проверяется существование файла на дату проверки..
может автор темы прояснит точнее задачу
 

armenxxx1

Продвинутый
Сообщения
155
Репутация
56
Код:
#Include <File.au3>
#Include <Array.au3>
$FileList=_FileListToArray(@ScriptDir & "\Dump\","*",2)
If (Not IsArray($FileList)) and (@Error=1) Then
    MsgBox (0,"","No Files\Folders Found.")
    Exit
EndIf
_ArrayDisplay($FileList,"$FileList")



Код:
#Include <File.au3>
#Include <Array.au3>
$FileList=_FileListToArray(@ScriptDir & "\Dump\","2011*",2)
If (Not IsArray($FileList)) and (@Error=1) Then
    MsgBox (0,"","No Files\Folders Found.")
    Exit
EndIf
_ArrayDisplay($FileList,"$FileList")
 

Zaramot

I ♥ AutoIt
Сообщения
1,160
Репутация
660
Если дата там в таком формате ГОД.МЕСЯЦ.ДЕНЬ то можно так попробывать:
Код:
$Date = @YEAR & '.' & Number(@MON) & '.' & Number(@MDAY)
$sFileName = 'C:\061\G_1\Log1\' & $Date & '\Dump' & $Date & '.html'


Полный скрипт:
Код:
HotKeySet('8', '_Exit');8 - выход

$sSearchWord = 'Append'
$Date = @YEAR & '.' & Number(@MON) & '.' & Number(@MDAY)
$sFileName = 'C:\061\G_1\Log1\' & $Date & '\Dump' & $Date & '.html'
$sFileName = @ScriptDir & '\Dump' & @YEAR & '.' & Number(@MON) & '.' & Number(@MDAY) & '.html'
$sText = FileRead($sFileName)
StringReplace($sText, $sSearchWord, '')
$iOldNum = @extended

$iStart = TimerInit()
While 1
    If TimerDiff($iStart) > 1000 Then ;проверка через 1 сек.9
        $sFileName = @ScriptDir & '\Dump' & @YEAR & '.' & Number(@MON) & '.' & Number(@MDAY) & '.html'
        If FileExists($sFileName) Then
            $sText = FileRead($sFileName)
            StringReplace($sText, $sSearchWord, '')
            $iNumNow = @extended
            $sText = ''
            If $iOldNum < $iNumNow Then
                Beep(500, 50)
                ToolTip('Кол-во слов ' & $sSearchWord & ' изменилось.' & @LF & 'Было: ' & _
                        $iOldNum & ', стало: ' & $iNumNow, 0, 0)
                $iOldNum = $iNumNow
                ;здесь можете делать то, что Вам надо.
            EndIf
        EndIf
        $iStart = TimerInit()
    EndIf
    Sleep(20)
WEnd

Func _Exit()
    Exit
EndFunc   ;==>_Exit


PS Не сомневайся :smile:
 

XpycT

Скриптер
Сообщения
380
Репутация
133
madmasles [?]
А если день (месяц, год) изменился?
Как то не подумал об этом, вот еще вариант

Код:
HotKeySet('8', '_Exit');8 - выход

$sSearchWord = 'Append'
$sFileName = 'C:\061\G_1\Log1\'& _Date() & '\Dump' & _Date() & '.html'
$sText = FileRead($sFileName)
StringReplace($sText, $sSearchWord, '')
$iOldNum = @extended

$iStart = TimerInit()
While 1
    If TimerDiff($iStart) > 1000 Then ;проверка через 1 сек.9
        $sFileName = 'C:\061\G_1\Log1\'& _Date() & '\Dump' & _Date() & '.html'
        If FileExists($sFileName) Then
            $sText = FileRead($sFileName)
            StringReplace($sText, $sSearchWord, '')
            $iNumNow = @extended
            $sText = ''
            If $iOldNum < $iNumNow Then
                Beep(500, 50)
                ToolTip('Кол-во слов ' & $sSearchWord & ' изменилось.' & @LF & 'Было: ' & _
                        $iOldNum & ', стало: ' & $iNumNow, 0, 0)
                $iOldNum = $iNumNow
                ;здесь можете делать то, что Вам надо.
            EndIf
        EndIf
        $iStart = TimerInit()
    EndIf
    Sleep(20)
WEnd

Func _Date()
	Return @YEAR & '.' & Number(@MON) & '.' & Number(@MDAY)
EndFunc

Func _Exit()
    Exit
EndFunc   ;==>_Exit
 

joiner

Модератор
Локальный модератор
Сообщения
3,557
Репутация
628
at, если бы на мои вопросы всегда так отвечали я был бы очень щастлив :smile:
 

XpycT

Скриптер
Сообщения
380
Репутация
133
Вот еще один вариант

Код:
HotKeySet("{ESC}", "_Exit"); ESC - выход

Global $iOldNum

AdlibRegister("_CheckFile", 1000)

While 1
    Sleep(100)
WEnd

Func _CheckFile()
    Local $sFileName = "C:\061\G_1\Log1\" & _Date() & "\Dump" & _Date() & ".html"

    $sSearchWord = "Append"

    StringReplace(FileRead($sFileName), $sSearchWord, "")
    $iNumNow = @extended

    If $iOldNum < $iNumNow Then
        Beep(500, 50)
        ToolTip('Кол-во слов ' & $sSearchWord & ' изменилось.' & @LF & 'Было: ' & $iOldNum & ', стало: ' & $iNumNow, 0, 0)
        $iOldNum = $iNumNow
    EndIf
EndFunc

Func _Date()
	Return @YEAR & '.' & Number(@MON) & '.' & Number(@MDAY)
EndFunc

Func _Exit()
    Exit
EndFunc   ;==>_Exit
 
Автор
A

at

Гость
Автор: Александр ... может автор темы прояснит точнее задачу

Каждый день создается файл, который имеет дату в имени в новой папке , которая тоже имеет дату в своем названии. Номер месяца и дня создается без нуля в начале.
Спасибо всем, выделил на свой взгляд самые понятные для новичка решения.

Пример: Сегодня 10 сентября 2011 года. Наш файл - C:\061\G_1\Log1\2011.9.10\Dump2011.9.10.html

Сделать можно так:

Код:
$sFileName = 'C:\061\G_1\Log1\'& @YEAR & '.' & Number(@MON) & '.' & Number(@MDAY) & '\Dump' & @YEAR & '.' & Number(@MON) & '.' & Number(@MDAY) & '.html'


Код:
$sFileName = 'C:\061\G_1\Log1\'& _Date() & '\Dump' & _Date() & '.html'
Func _Date()
    Return @YEAR & '.' & Number(@MON) & '.' & Number(@MDAY)
EndFunc


Код:
$Date = @YEAR & '.' & Number(@MON) & '.' & Number(@MDAY)
$sFileName = 'C:\061\G_1\Log1\' & $Date & '\Dump' & $Date & '.html'



Код:
$sFileName = @HomeDrive & '\061\G_1\Log1\' & @YEAR & '.' & Number(@MON) & '.' & Number(@MDAY) & '\Dump' & @YEAR & '.' & Number(@MON) & '.' & Number(@MDAY) & '.html'
 
Верх