Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » как правильно сделать батник ? (*.bat), Windows

Модерирует : KLASS, IFkO

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4

Открыть новую тему     Написать ответ в эту тему

WMW_Lev

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Народ, конкретно, вроде простая задача, а не выполняется.
Мне нужно забэкапить несколько файлов.
Пробовал использовать команду COPY - не получается. Чувствую виноваты пробелы в имени папки. Но имя папки я изменить не могу.
Пробовал вместо "пробела" ставить %20 (%%20) - мимо кассы.
Конкретно, как из папки
C:\Documents and Settings\wmw_lev\Application Data\Opera\Opera7.54\profile\opera6.ini
этот файл перенести в
e:\WMW\_Depository_\W_XP_My_setting\To_be_entitled_to_updates\Opera\opera6.ini
 ну не выходит и все тут.
А если еще в имени  файла кириллица, тогда как?

Всего записей: 26 | Зарегистр. 22-04-2002 | Отправлено: 19:54 23-03-2005
volodyalipkin



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Кавычки не могут спасти отца русской демократии?
copy "C:\Documents and Settings\wmw_lev\Application Data\Opera\Opera7.54\profile\opera6.ini" "e:\WMW\_Depository_\W_XP_My_setting\To_be_entitled_to_updates\Opera\opera6.ini"

Всего записей: 771 | Зарегистр. 12-10-2002 | Отправлено: 20:12 23-03-2005
Den_Klimov



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Кто-нибудь просветите плиз.. очень нужно..
 
Чем между собой различаются эти два батника?
 
C:\RadminServer\RadminServer.msi /quiet
REGEDIT.exe /S "C:\RadminServer\-Port.reg"
REGEDIT.exe /S "C:\RadminServer\-Radmin Security.reg"
REGEDIT.exe /S "C:\RadminServer\+Port.reg"
REGEDIT.exe /S "C:\RadminServer\+Radmin Security.reg"
"C:\windows\system32\rserver30\RServer3.exe" /stop
"C:\windows\system32\rserver30\RServer3.exe" /start
exit
 
start /wait C:\RadminServer\RadminServer.msi /quiet
start /wait REGEDIT.exe /S "C:\RadminServer\-Port.reg"
start /wait REGEDIT.exe /S "C:\RadminServer\-Radmin Security.reg"
start /wait REGEDIT.exe /S "C:\RadminServer\+Port.reg"
start /wait REGEDIT.exe /S "C:\RadminServer\+Radmin Security.reg"
"C:\windows\system32\rserver30\RServer3.exe" /stop
"C:\windows\system32\rserver30\RServer3.exe" /start
exit
 
В чём сакраментальная разница наличия start /wait?
Результат выполнения вроде ж одинаковый..
Ведь насколько я понимаю.. при выполнении батника, пока не выполнена предыдущая команда, команда следующая за ней не выполнятеся.. Так?
 
Я чего-то не доганяю? Наверное смысла команды start.. для чего она вообще может пригодиться?

Всего записей: 317 | Зарегистр. 27-02-2006 | Отправлено: 17:34 11-05-2007
abz



Хулиган
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Den_Klimov

Цитата:
Я чего-то не доганяю? Наверное смысла команды start.. для чего она вообще может пригодиться?

Пуск - Выполнить - cmd - start /?

Всего записей: 14975 | Зарегистр. 04-11-2002 | Отправлено: 23:10 11-05-2007
Smitis



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Den_Klimov
regedit - гуевый. Запущеный из командного файла будет работать как отдельный процесс. Команда start с ключём /wait также запускает регедит, но дожидается его завершения. Т.е., следующая команда не выполниться, пока даные не импортируются в реестр.

----------
Разум когда-нибудь победит

Всего записей: 3233 | Зарегистр. 09-02-2003 | Отправлено: 12:18 14-05-2007
HereticX



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Можно ли батником заставить делать скриншоты?

Всего записей: 5 | Зарегистр. 22-05-2007 | Отправлено: 12:55 22-05-2007
Elroir



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
HereticX
Заставить кого? Скриншоты чего?

----------
"В интернете есть все, но не всегда"

Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 15:43 22-05-2007
Maza Faka



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
HereticX

Цитата:
Можно ли батником заставить делать скриншоты?

Средствами командной строки, нет. Но если есть консольная утилита, которая делает скриншоты, то можно.

Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 16:35 22-05-2007
HereticX



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Консольную утилиту я вызываю батником, а в планировщике задаю расписание.
 
Но такие утилиты как правило платные, хотелось бы обойти слежку за юзерами с помощью встроенных средств винды. Вот и решил "забатить" это дело.  
Отсюда 3 вопроса:
 
1. Я его уже задал - можно ли из бата снимать скриншот экрана? Ведь чем-то должна активироваться кнопка PrintScreen. Хотя понимаю, что PrintScreen загоняет снимок в буфер, а значит ему надо как-то указать, что делать с содержимым буфером.
 
2. Как скрыть окно запускающегося по расписанию батника? Ярлык не канает, т.к. в планировщик его не загонишь. Пока обхожусь VBS скриптом.
 
3. Знаю, что подобные вопросы уже были, но всё таки не для точной такой проблемы.
Планировщик каждые 10 минут запускает мой бат. Но в нем прописано имя файла для консольной утилиты типа scan.jpg. Как задать в бате, что каждый последующий файл был с временем и датой вместо имени?

Всего записей: 5 | Зарегистр. 22-05-2007 | Отправлено: 13:02 23-05-2007
Maza Faka



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
HereticX
1.Нет, при помощи бата нельзя "нажать" клавишу "PrintScreen" и уж тем более работать с буфером обмена.
 
2.Утилита CMDOW, используешь так:

Код:
 
@echo off
CMDOW @ /HID
твой код...
........
 

 
3.%time% %date%

Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 14:20 23-05-2007
HereticX



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
2Maza Faka
Спасибо большое за помощь.
 
С первыми двумя пунктами разобрался.  
 
А вот с простановкой времени ничего не пойму.  
Дата ставится молча, но мне одной даты мало. За день наскриншотит снимков 50, а ведь дата одна и таже. Значит без времени не обойтись.
Пытался делать что-то типа: %time:~-5%. Цифири появляются, только там по-моему секунды и доли какие-то. Пробовал все от 0 до 10 - ни хера.
И потом, если пытаюсь соединить и дату и время выдает одну дату...

Всего записей: 5 | Зарегистр. 22-05-2007 | Отправлено: 14:51 23-05-2007
KapralBel



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
HereticX

Код:
@Echo Off
Set dtDate=%Date%
Set dtTime=%Time%
 
Set dtDay=%dtDate:~0,2%
Set dtMonth=%dtDate:~3,2%
Set dtYear=%dtDate:~6,4%
 
Set dtHour=%dtTime:~0,2%
Set dtMin=%dtTime:~3,2%
Set dtSec=%dtTime:~6,2%
Set dtMsec=%dtTime:~9,2%
 
Set dtFull=%dtYear%%dtMonth%%dtDay%-%dtHour%%dtMin%%dtSec%%dtMSec%
 
Set dt
 

 
Может перейдем в  
Задачи на bat-файлах 3
или
Командная строка, батники, сценарии (bat, cmd)

Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 15:09 23-05-2007
HereticX



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спасибо, KapralBel и Maza Faka.
Помогло, всё работает!

Всего записей: 5 | Зарегистр. 22-05-2007 | Отправлено: 16:16 23-05-2007
iltmpz

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вопрос: а есть какая-нибудь "культура написания батников", чтобы быть уверенным, что он нормально сработает?
 
Хочу поделиться своим опытом:
Я хотел отключить сетевую шару
я-то наивно предполагал, что если я запущу ночью в планировщике bat-ник с такой командой:

Код:
net share foldername /delete >> c:\log.txt
 

то он отключит foldername. Зря я так думал.
Он всю ночь провисел с вопросом:

Код:
Пользователи имеют на foldername открытые файлы.  Продолжение операции приведет к закрытию файлов.
 
Продолжить операцию? (Y-да/N-нет) [N]:  
 

Попытка написать "echo y | net share foldername /delete" привела к тому, что он просто ответил:

Код:
Не был получен допустимый отклик.

 
Мало того: в тот же c:\log.txt перенаправлялись другие команды батника, так они просто игнорировались со словами:

Код:
Процесс не может получить доступ к файлу, так как этот файл занят другим процессом.
 

(странное поведение ОС), ладно бы команды выполнились, а вывод результата потерялся, а нет, оказалось, что оно работает именно так.


В результате методом тыка я понял, что надо было написать "net share foldername /delete /y" (хотя "net help share" и доки ни о чем таком не говорят).
 
Собственно о сути моего вопроса:
Я хочу "написать батник и спать спокойно", пребывая в уверенности, что он будет выполнен, даже если то, что из него вызывалось, будет глючить. Причем по логам хочу установить, что конкретно глючило.
 
Поэтому я хочу услышать мнения, кто что думает о культуре написания батников:
1. Когда это возможно, писать абсолютные пути.
 
2. в начале и в конце каждого батника писать:

Код:
 
echo имя_файла started/finished >> c:\log.txt
date /t >> c:\log.txt
time /t >> c:\log.txt
 

 
3. Из-за

Код:
Процесс не может получить доступ к файлу, так как этот файл занят другим процессом.
 

для каждого вызова программы придется делать ">>c:\log1.txt", ">>c:\log2.txt" и т.п. а потом склеивать их: "copy c:\log.txt + c:\log1.txt"
правда при этом система сильно усложняется, и это вызовет дополнительную путаницу.
 
4. Можно ли как-то в общем случае отучить его задавать "очень умные" вопросы типа:

Код:
 
Продолжить операцию? (Y-да/N-нет) [N]:  
 

мысль 1: на всякий случай вызов каждой программы писать не  "prog.exe", а "echo y|prog.exe" или даже "yes.exe|prog.exe". Это иногда поможет ответить "y", иногда хотя бы просто предотвратит зависание. Иногда правда это не помогает
 
5. Активнее использовать taskkill если программа может зависнуть, а она занимает ресурсы, которые могут быть нужны в дальнейшем.
 
И т.д.
Если такое нигде раньше не обсуждалось, список было бы здорово дополнять, а, чтобы он не утонул, поместить его в шапку этой темы.

Всего записей: 281 | Зарегистр. 05-04-2006 | Отправлено: 18:45 05-06-2007
KapralBel



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
iltmpz
Ничего крамольного в твоем батничке нет, почему лог файл-занят - может быть только одна причина - кто-то еще пытается в него записать
Попробуй сменить имя на C:\del_share.log
 
PS. А наиболее популярные темы по батничкам указаны в моем предыдущем посте (быстрее получишь толковую помощь)

Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 19:23 05-06-2007
iltmpz

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
почему лог файл-занят - может быть только одна причина - кто-то еще пытается в него записать

ну да, в него в этот момент пытается записать net:

Код:
 
net share foldername /delete >> c:\log.txt
 

Я и думаю сменить имя...
 
В общем, наверно и правда, универсального решения нет, надо просто некоторое время аккуратно отлаживать батники, пока они не будут работать стабильно.
 
P.S: спасибо, 2-ю ссылку я пропустил.

Всего записей: 281 | Зарегистр. 05-04-2006 | Отправлено: 22:05 05-06-2007 | Исправлено: iltmpz, 22:06 05-06-2007
KapralBel



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
iltmpz

Цитата:
В общем, наверно и правда, универсального решения нет, надо просто некоторое время аккуратно отлаживать батники, пока они не будут работать стабильно.

Это единственно верное решение

Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 00:52 06-06-2007
frezor



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Не могли бы написать батник для запуска вот этого *.exe
Это принтер, печатаю я редко, а он всё время в автозагрузке, которую я отключил.
У меня две оси и было бы хорошо, если бы путь определялся вне зависимости от буквы диска.
И ещё, нельзя ли сделать так, чтобы окно командной строки после запуска автоматически скрывалось без нажатия любой буквы?
Был бы чрезвычайно признателен.
X:\WINDOWS\Samsung\ComSMMgr\SSMMgr.exe

Всего записей: 132 | Зарегистр. 11-07-2009 | Отправлено: 20:08 23-12-2010
Elroir



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
frezor
Что-то типа такого:

Код:
 
@echo off
start "" "%windir%\Samsung\ComSMMgr\SSMMgr.exe"
 


----------
"В интернете есть все, но не всегда"

Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 03:26 24-12-2010
Nightwalker666

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ребят, подскажите. Нашел в интернете такой код для батника:
 
@ECHO OFF
:start
ping -n 1 mail.ru>nul  
goto answer%ERRORLEVEL%
:answer0
goto exit
:answer1
netsh interface set interface "Подключение по локальной сети" disable
netsh interface set interface "Подключение по локальной сети" enable
:exit
exit
 
У меня часто пропадает трафик интернета (нужно для торрента - раздачи останавливаются), а если перезапустить сетевое соединение все нормально начинает работать и держится 3-5 часов. Вручную перезапускать уже надоело, да и ночью из-за этого торрент-клиент простаимвает.
Так вот этот код я вставил в файл *.txt и переименовал его в *.bat, положил в папку автозагрузки, перезагрузил - не работает, интернет не переподключает. Сейчас попробовал через планировщик, но мне кажется тоже не сработает.
Подскажите пожалуйста, может я что-то не так делаю или код неправильный?

Всего записей: 31 | Зарегистр. 24-03-2011 | Отправлено: 15:22 14-04-2011
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4

Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » как правильно сделать батник ? (*.bat), Windows


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru