Что нового

Время, дата Дата в имени файла

lapin9126

Новичок
Сообщения
36
Репутация
1
Здравствуйте, скриптом, работал с 12 числа прошлого месяца без нареканий (был написан до указанной даты и не был протестирован на наличие подобной ошибки), но вот при переходе на новый месяц случилась проблема, не может открыть файл с числом следующего месяца, а ищет файл с 32.10. И ещё, списки генерируются с именами автоматически, и отсюда другая проблема: имена файлов с числами до 10 выглядят как (SPISOK_01_11, SPISOK_02_11 и т.д.), а скрипт ищет файлы с именем SPISOK_1_11, SPISOK_2_11. Помогите подправить до рабочего состояния. Почему в скрипте "+1" к текущему дню?: файл открывается в текущую дату, но с именем завтрашнего дня.
Код:
#include <Date.au3>
$Dir = "Z:\123\"
     $tNow = _Now1()
     $FileName = "SPISOK" & "_" & $tNow & ".txt"
ShellExecute($Dir & $FileName)

Func _Now1()
Return @MDAY+1 & "_" & @MON
EndFunc

Снимок форум.PNG
Снимок форум_2.PNG
 

Zmy

Знающий
Сообщения
18
Репутация
6
Так а что надо?
На завтрашнюю дату или сегодняшнюю?
 
Автор
L

lapin9126

Новичок
Сообщения
36
Репутация
1
Нужно чтобы переход был на следующий месяц, и формат в имени файла 01, 02, 03 и т. д.
 

Zmy

Знающий
Сообщения
18
Репутация
6
Я не до конца понимаю, какая цель скрипта.

Первый вопрос:
Допустим сегодня.
15.04
Что должно быть в итоге?

Второй вопрос:
Допустим сегодня.
31.08
Что должно быть в итоге?



"Сегодня" - это дата, когда вызывается скрипт.
 
Автор
L

lapin9126

Новичок
Сообщения
36
Репутация
1
Я не до конца понимаю, какая цель скрипта.

Первый вопрос:
Допустим сегодня.
15.04
Что должно быть в итоге?

Второй вопрос:
Допустим сегодня.
31.08
Что должно быть в итоге?



"Сегодня" - это дата, когда вызывается скрипт.
В текущую дату отрыть файл в названии которого дата следующего дня, а в случае последнего дня месяца, первый день следующего месяца и формат поиска файла не 1.11 а 01.11 и такой формат до 10 числа, а дальше в стандартном порядке.
 

Zmy

Знающий
Сообщения
18
Репутация
6
Ну короче, я тут набросал скрипт. Посмотрите.
Меняйте системную дату на компьютере, и пробуйте запускать с разными датами.

Код:
Global $Dir="Z:\123\"

_a()
Func _a()
Local $r="",$n=@YEAR,$e=@MON,$y="SPISOK_",$w=@MDAY,$z=""
Switch $e
Case 5,12,7,3,8,10,1
If $w>30 Then
$z=1
$e+=1
Else
$w+=1
$z=$w
EndIf
Case 2
If (((Mod($n,4)=0)And(Mod($n,100)<>0))or(Mod($n,400)=0)) Then
If $w>28 Then
$z=1
$e+=1
Else
$w+=1
$z=$w
EndIf
Else
If $w>27 Then
$z=1
$e+=1
Else
$w+=1
$z=$w
EndIf
EndIf
Case Else
If $w>29 Then
$z=1
$e+=1
Else
$w+=1
$z=$w
EndIf
EndSwitch
If (($e=12)and($z=31)) Then
$z=1
$e=01
EndIf
$z=StringFormat("%02s",$z)
$e=StringFormat("%02s",$e)
if StringRight($Dir,1)<>"\" Then $Dir=$Dir&"\"
$r=$Dir&$y&$z&"_"&$e&".txt"
If FileExists($r) Then
ShellExecute($r,"",$Dir)
Else
MsgBox(262144,'Not Founded','Not Founded File: '&@CR&@CR&@CR&@CR&$r&" "&@CR)
EndIf
EndFunc
 
Автор
L

lapin9126

Новичок
Сообщения
36
Репутация
1
Спасибо, буду тестировать. Думал будет попроще что-нибудь через функцию _DateAdd.
 

pvnn

Осваивающий
Сообщения
305
Репутация
32
...через функцию _DateAdd.
Код:
#include <Date.au3>

$Dir = "Z:\123\"
     $tNow = _Now1()
     $FileName = "SPISOK" & "_" & $tNow & ".txt"
;ShellExecute($Dir & $FileName)
ConsoleWrite($Dir & $FileName)

Func _Now1()
$NewDate=_DateAdd('D',1,_NowCalc())
Return StringMid($NewDate,9,2)&'_'&StringMid($NewDate,6,2)
;~ Return @MDAY+1 & "_" & @MON
EndFunc
 
Автор
L

lapin9126

Новичок
Сообщения
36
Репутация
1
...через функцию _DateAdd.
Код:
#include <Date.au3>

$Dir = "Z:\123\"
     $tNow = _Now1()
     $FileName = "SPISOK" & "_" & $tNow & ".txt"
;ShellExecute($Dir & $FileName)
ConsoleWrite($Dir & $FileName)

Func _Now1()
$NewDate=_DateAdd('D',1,_NowCalc())
Return StringMid($NewDate,9,2)&'_'&StringMid($NewDate,6,2)
;~ Return @MDAY+1 & "_" & @MON
EndFunc
Спасибо за дополнительный вариант, буду тестировать.
 
Автор
L

lapin9126

Новичок
Сообщения
36
Репутация
1
Спасибо всем за помощь. Заболел короной, не мог сразу отвечать.
 
Верх