Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] bat который при запуске системы проверяет дату и запускается в hh.dd.mm.yyyy (http://forum.oszone.net/showthread.php?t=283451)

infoman1@vk 10-06-2014 18:15 2362580

bat который при запуске системы проверяет дату и запускается в hh.dd.mm.yyyy
 
bat который при запуске системы проверяет дату и запускается в hh.dd.mm.yyyy
не нужно что бы он всегда был запущен, он будет стоять в автозагрузке и при старте системы смотрит на дату, и если уже 15.00 01.01.2015 или дальше то запускает файл 1.exe
а если дата пока не настала то закрывается что бы не грузить систему

infoman1@vk 12-06-2014 00:03 2363111

ну что никто?

Iska 12-06-2014 00:51 2363134

WSH:
Код:

Option Explicit

Dim dtConditionDate
Dim strPath


dtConditionDate = CDate("01.01.2015 15:00")
strPath = "1.exe"

If Now() >= dtConditionDate Then
        If WScript.CreateObject("Scripting.FileSystemObject").FileExists(strPath) Then
                WScript.CreateObject("WScript.Shell").Run """" & strPath & """"
        Else
                WScript.Echo "File [" & strPath & "] not found."
                WScript.Quit 1
        End If
End If

WScript.Quit 0


Georgio 12-06-2014 02:14 2363152

Код:

@echo off
setlocal enabledelayedexpansion
for /f "tokens=1-5 delims=,.\ " %%a in ("%time::=% %date%") do (
 set $date=.%%c.%%d.%%e
 if "!$date:.0=.!"==".1.1.2015" (
  for /f "tokens=* delims=0" %%f in ("%%a%%b") do (
  if %%f geq 15000000 (
    start "" "1.exe"
    )
  )
  )
 )
endlocal
exit /b


infoman1@vk 12-06-2014 14:31 2363264

вот сделал с етих кодов BAT дату сегоднишнию поставил, с папки виндовса копировал блокнот в отдельную папку, переименовал его на 1.exe, и ни один не работает
Файл 114209

Файл 114210

infoman1@vk 12-06-2014 14:50 2363269

блокнот должен был запустится. дата там та которая уже прошла

Georgio 12-06-2014 15:16 2363283

infoman1@vk,



1) надо было ставить не ".12.06.2014", а ".12.6.2014" (т. е. без начальных нулей);


2) "15000000" -- это время "15:00:00,00", которое также нужно было заменить на соответствующее моменту без начальных нулей (за исключением времени "0:00:00,00", которое заменяется на один нуль), например:

Код:

0:00:00,00 -- 0
 0:01:00,00 -- 10000
 0:12:59,59 -- 125959
 9:35:30,00 -- 9353000
15:30:00,00 -- 15300000

.

infoman1@vk 19-06-2014 20:11 2366268

разобрался работает. но есть какая то ошибка
когда пишу
10.6.2014 то не работает

а когда
19.6.2014 то работает.

но 10.6.2014 дата которая уже прошла.
как это исправить?

White Rabbit 20-06-2014 08:54 2366418

Цитата:

Цитата Georgio
(т. е. без начальных нулей »

Сорри, что вклиниваюсь. А как быть, когда нужны начальные нули? Дело в том что у меня батник формирует название папки по дате и времени. Когда на первом месте не ноль всё ОК, но когда ноль... Он его опускает. Правда касается это только времени, по дате вроде бы пока всё ОК. Что можно сделать?
читать дальше »

@echo off
set vtime=%time:~0,-3%
set т=%date:~-4%%date:~2,-4%%date:~0,-8%_%vtime::=.%
md "%n%"

Однако же небогато советов...

Georgio 23-06-2014 07:12 2367350

White Rabbit, вот так:

Код:

@echo off
set vtime=%time:~0,-3%
set vtime=%vtime: =0%
set n=%date:~-4%%date:~2,-4%%date:~0,-8%_%vtime::=.%
md "%n%"

.

Georgio 23-06-2014 18:28 2367518

Цитата:

Цитата infoman1@vk
как это исправить? »


Код:

@echo off
setlocal enabledelayedexpansion
for /f "tokens=1-5 delims=,.\ " %%a in ("%time::=% %date%") do (
 set d=0%%c
 set m=0%%d
 if %%e!m:~-2!!d:~-2! geq 20150101 (
  for /f "tokens=* delims=0" %%f in ("%%a%%b") do (
  if %%f geq 15000000 (
    start "" "1.exe"
    )
  )
  )
 )
endlocal
exit /b

infoman1@vk, обратите впимание: теперь дата подставляется с соответствующими нулями, а время, как и было, без начальных нулей, за исключением одного нуля в случае "0:00:00,00".

Georgio 28-06-2014 15:36 2369524

При использовании "wmic.exe" весь код можно записать в одну строку:
Код:

@for /f "tokens=2 delims==+" %%i in ('wmic OS get LocalDateTime /value') do @if %%i geq 20150101150000.000000 start "" "1.exe"
.

infoman1@vk 07-07-2014 02:28 2372973

Цитата:

Цитата Georgio
Код:
@echo off
setlocal enabledelayedexpansion
for /f "tokens=1-5 delims=,.\ " %%a in ("%time::=% %date%") do (
set d=0%%c
set m=0%%d
if %%e!m:~-2!!d:~-2! geq 20150101 (
for /f "tokens=* delims=0" %%f in ("%%a%%b") do (
if %%f geq 15000000 (
start "" "1.exe"
)
)
)
)
endlocal
exit /b »


дату ставлю 20140101
время:
15000000 - не запускает 1.exe
05000000 - не запускает 1.exe
08000000 - запускает 1.exe
09000000 - запускает 1.exe
10000000 - не запускает 1.exe
даты не меняю только время, как вы видите дата давно прошла. а файл то запускается то нет

Iska 07-07-2014 05:01 2372984

WSH мне нравится всё больше и больше :lol:.

infoman1@vk 07-07-2014 11:25 2373050

Цитата:

Цитата Georgio
При использовании "wmic.exe" весь код можно записать в одну строку:
Код:
@for /f "tokens=2 delims==+" %%i in ('wmic OS get LocalDateTime /value') do @if %%i geq 20150101150000.000000 start "" "1.exe"
. »

будет ли скрипт работать на всех версиях виндовса?
у меня хр скрипт работает. а на других версиях ?

Iska 07-07-2014 15:02 2373163

Цитата:

Цитата infoman1@vk
будет ли скрипт работать на всех версиях виндовса? »

Только от Windows XP Professional и выше. На Windows XP Home Edition и предыдущих версиях Windows — «wmic.exe» отсутствует.


Время: 07:59.

Время: 07:59.
© OSzone.net 2001-