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

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   задачка про *.bat файл (http://forum.oszone.net/showthread.php?t=81503)

igoren032 23-03-2007 17:53 565867

задачка про *.bat файл
 
Задача:
написать bat файл, который срабатывал-бы на определённую дату,(т.е. срабатывал по условию), перенося файл из одного места в другое. При этом, файл на прежнем месте не должен оставаться (т.е. его надо оттуда "вырезать").

Ramzes_ 23-03-2007 20:52 565923

Move
Служит для перемещения одного или нескольких файлов из одного каталога в другой.

Синтаксис

move [{/y|/-y}] [источник] [результат]

Параметры

/y
Запрет на выдачу запроса подтверждения перезаписи существующего файла-результата.

/-y
Выдача запроса подтверждения перезаписи существующего файла-результата.

источник
Путь и имя одного или нескольких файлов для перемещения. Если требуется переместить или переименовать каталог, в качестве источника должен быть указан путь к текущему каталогу и его имя.

результат
Путь и имя, куда требуется переместить файлы. Если требуется переместить или переименовать каталог, в качестве результата должен быть указан путь к конечному каталогу и его имя.


Для запуска полученного батника в нужное время воспользуйся планировщиком.

igoren032 27-03-2007 12:56 566995

Нет, планировщик мне как раз не нужен!
Мне надо это сделать средствами DOS !!!

CyberDaemon 27-03-2007 14:27 567027

igoren032
Штатными средствами ДОС запустить BAT-файл в пределенное время, AFAIK не получится.
Можно в BAT-файле проверить дату, и в случае совпадения перенести файл.
Как ты собираешься запускать батник?

Цитата:

Date
Вывод или изменение даты.

DATE [/T | дата]

Команда DATE без параметров отображает текущую дату и запрашивает ввод
новой даты. Для сохранения текущей даты нажмите клавишу ENTER.

Когда расширенная обработка команд включена, команда DATE поддерживает
ключ /T, позволяющий просто вывести текущее значение даты без запроса
новой даты.

igoren032 27-03-2007 15:26 567056

Цитата:

Date
Вывод или изменение даты.

DATE [/T | дата]

Команда DATE без параметров отображает текущую дату и запрашивает ввод
новой даты. Для сохранения текущей даты нажмите клавишу ENTER.

Когда расширенная обработка команд включена, команда DATE поддерживает
ключ /T, позволяющий просто вывести текущее значение даты без запроса
новой даты.
По поводу DATE - я в курсе, что DATE "отображает текущую дату и запрашивает ввод новой даты". Я хочу запускать bat файл автоматом ( при старте Винды ). Он должен проверять текущую дату, если эта дата совпадает с текущей датой - то надо перенести такой-то файл!

igoren032 27-03-2007 16:13 567076

Текс предполагаемого исполняемого bat файла:

echo off
cls
echo start backup
attrib -r -s -h c:\1.jpg
copy c:\1.jpg c:\WINDOWS
del c:\1.jpg
echo end backup


где 1.jpg - искомый перемещаемый файл,
Этот bat-ий файл я сую в автозагрузку через редактор реестра в ветку H_C_U\Software\Microsoft\Windows\CurrentVersion\Run
При старте Винды я вижу, что этот файл запускается и, в принципе, он срабатывает, НО...
это не проходит с системными файлами (типа, boot.ini, ntldr), а меня интересует перемещение именно этих файлов!

CyberDaemon 27-03-2007 16:35 567084

Цитата:

Он должен проверять текущую дату, если эта дата совпадает с текущей датой - то надо перенести такой-то файл!
Какие проблемы? Проверяй и выполняй
IF "%DATE%"=="27.03.2007" MOVE ...

igoren032 27-03-2007 16:53 567094

Цитата:

IF "%DATE%"=="27.03.2007" MOVE ...
Попробовал - не хочет, к сожалению, работать!

CyberDaemon 27-03-2007 17:18 567103

Код:

IF "%DATE%"=="27.03.2007" (move c:\test.txt e:\)
У меня сработало, файлик улетел.
Без скобок тоже сработало.
Как именно у тебя не хочет?
DATE /T в каком виде дату отдает?

igoren032 27-03-2007 17:30 567108

Цитата:

У меня сработало, файлик улетел.
Без скобок тоже сработало.
Как именно у тебя не хочет?
DATE /T в каком виде дату отдает?


пишу проверку:

cmd
date /t
27.03.2007

,а если

%date%, то
"27.03.2007" не является внутренней или внешней командой, исполняемой командой или пакетным файлом.

CyberDaemon 27-03-2007 17:36 567112

Цитата:

"27.03.2007" не является внутренней или внешней командой, исполняемой командой или пакетным файлом.
Ну все правильно, %date% это-ж переменная :) Тебе значение в кавычках в начале ничего не напоминает? :)
Код:

IF "%DATE%"=="27.03.2007" (echo 1) else (echo 0)
Вот эта команда у тебя что выведет?

Vadikan 27-03-2007 18:47 567137

В зависимости от региональных настроек переменная %DATE% и команда date /t возвращают различные значения. Ссылка по теме Batch files - DATE and TIME in NT batch

igoren032 01-04-2007 15:40 569222

Цитата:

IF "%DATE%"=="27.03.2007" (echo 1) else (echo 0)
выдаёт 0


Время: 21:52.

Время: 21:52.
© OSzone.net 2001-