Показать полную графическую версию : задачка про *.bat файл
igoren032
23-03-2007, 17:53
Задача:
написать bat файл, который срабатывал-бы на определённую дату,(т.е. срабатывал по условию), перенося файл из одного места в другое. При этом, файл на прежнем месте не должен оставаться (т.е. его надо оттуда "вырезать").
Move
Служит для перемещения одного или нескольких файлов из одного каталога в другой.
Синтаксис
move [{/y|/-y}] [источник] [результат]
Параметры
/y
Запрет на выдачу запроса подтверждения перезаписи существующего файла-результата.
/-y
Выдача запроса подтверждения перезаписи существующего файла-результата.
источник
Путь и имя одного или нескольких файлов для перемещения. Если требуется переместить или переименовать каталог, в качестве источника должен быть указан путь к текущему каталогу и его имя.
результат
Путь и имя, куда требуется переместить файлы. Если требуется переместить или переименовать каталог, в качестве результата должен быть указан путь к конечному каталогу и его имя.
Для запуска полученного батника в нужное время воспользуйся планировщиком.
igoren032
27-03-2007, 12:56
Нет, планировщик мне как раз не нужен!
Мне надо это сделать средствами DOS !!!
CyberDaemon
27-03-2007, 14:27
igoren032
Штатными средствами ДОС запустить BAT-файл в пределенное время, AFAIK не получится.
Можно в BAT-файле проверить дату, и в случае совпадения перенести файл.
Как ты собираешься запускать батник?
Date
Вывод или изменение даты.
DATE [/T | дата]
Команда DATE без параметров отображает текущую дату и запрашивает ввод
новой даты. Для сохранения текущей даты нажмите клавишу ENTER.
Когда расширенная обработка команд включена, команда DATE поддерживает
ключ /T, позволяющий просто вывести текущее значение даты без запроса
новой даты.
igoren032
27-03-2007, 15:26
Date
Вывод или изменение даты.
DATE [/T | дата]
Команда DATE без параметров отображает текущую дату и запрашивает ввод
новой даты. Для сохранения текущей даты нажмите клавишу ENTER.
Когда расширенная обработка команд включена, команда DATE поддерживает
ключ /T, позволяющий просто вывести текущее значение даты без запроса
новой даты.
По поводу DATE - я в курсе, что DATE "отображает текущую дату и запрашивает ввод новой даты". Я хочу запускать bat файл автоматом ( при старте Винды ). Он должен проверять текущую дату, если эта дата совпадает с текущей датой - то надо перенести такой-то файл!
igoren032
27-03-2007, 16:13
Текс предполагаемого исполняемого 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
Он должен проверять текущую дату, если эта дата совпадает с текущей датой - то надо перенести такой-то файл!
Какие проблемы? Проверяй и выполняй
IF "%DATE%"=="27.03.2007" MOVE ...
igoren032
27-03-2007, 16:53
IF "%DATE%"=="27.03.2007" MOVE ...
Попробовал - не хочет, к сожалению, работать!
CyberDaemon
27-03-2007, 17:18
IF "%DATE%"=="27.03.2007" (move c:\test.txt e:\)
У меня сработало, файлик улетел.
Без скобок тоже сработало.
Как именно у тебя не хочет?
DATE /T в каком виде дату отдает?
igoren032
27-03-2007, 17:30
У меня сработало, файлик улетел.
Без скобок тоже сработало.
Как именно у тебя не хочет?
DATE /T в каком виде дату отдает?
пишу проверку:
cmd
date /t
27.03.2007
,а если
%date%, то
"27.03.2007" не является внутренней или внешней командой, исполняемой командой или пакетным файлом.
CyberDaemon
27-03-2007, 17:36
"27.03.2007" не является внутренней или внешней командой, исполняемой командой или пакетным файлом.
Ну все правильно, %date% это-ж переменная :) Тебе значение в кавычках в начале ничего не напоминает? :)
IF "%DATE%"=="27.03.2007" (echo 1) else (echo 0)
Вот эта команда у тебя что выведет?
В зависимости от региональных настроек переменная %DATE% и команда date /t возвращают различные значения. Ссылка по теме Batch files - DATE and TIME in NT batch (http://www.robvanderwoude.com/datetiment.html)
igoren032
01-04-2007, 15:40
IF "%DATE%"=="27.03.2007" (echo 1) else (echo 0)
выдаёт 0
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.