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

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

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

vu1tur (14-11-2006 16:59): http://forum.ru-board.com/topic.cgi?forum=62&topic=9040  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101

   

hacsoft

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Задачи на bat-файлах
Вопросы, задачи и их решения по работе с командными файлами, а также сопутствующие ссылки.
 
Смежные темы:
В помощь системному администратору » Автоматизация администрирования
Программы » Командная строка, батники\сценарии
 
Полезные ссылки:
· Cmd. Описание от разработчиков
· Набор GNU утилит для win32
· Встроенный справочник по командам: hh ntcmds.chm
· Пакет утилит для организации интерфейса в bat-файлах
· Использование ansi.sys
· cmdow — изменение параметров и видимости дос-окна
· blat — отправка почты из консоли
 
Готовые решения и частые вопросы:
· Создание листинга директорий на примере создания плейлиста
· Разименовывание переменных
· Переименовывание файлов по дате создания
· Запуск сетевого подключения
· Запуск bat файлов как сервис
· Пример выполнения команд по результату команды ping
· Использование даты на день раньше чем сегодня
 
Невозможности — что нельзя сделать с помощью командных файлов:
· изменть конфигурацию IP на удаленной машине (без помощи rcmd.exe) [добавил ALEF]
 
 
Дополняем шапку: добавляем готовые решения, полезные ссылки.
 
Примечание: Большие куски кода заключайте в тэг [more]  
 
Важно: копируя батник через буфер обмена из форума не забывайте удалять пробелы в конце каждой строки, т.к. в некоторых случаях из-за этого программа будет работать неправильно!!!
 
Старая версия первого сообщения

Всего записей: 116 | Зарегистр. 18-11-2005 | Отправлено: 22:58 18-11-2005 | Исправлено: Elroir, 05:50 11-11-2006
Kirillhome



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Shish_kebab
Нет уж, выложи сюда получившийся у тебя bat-файл, напиши, какие у тебя ошибки - и тогда вместе разберёмся. ОК?

Всего записей: 426 | Зарегистр. 23-11-2004 | Отправлено: 23:02 07-09-2006
GarEx

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый день.
 
Подскажите, можно ли запустить два батника одновременно? Если в файле прописать start qwer.bat
start asdf.bat, то они соответственно подряд и запустятся. Может это как-то с помощью at сделать или еще какие варианты? Надо именно чтобы было приписано все в одном файле, который и запускается.  
 
И еще скажите, можно ли значок у батника сменить? Если через свойства менять, то создается ярлык с новым значком на этот бат-файл, а у самого батника не меняется. Может это возможно в самом батнике прописать, типа ICON=list.ico?
 
И еще вопрос. Как узнать текущую букву диска, с которого происходит запуск батника?

Всего записей: 16 | Зарегистр. 03-08-2006 | Отправлено: 16:45 08-09-2006
Kirillhome



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

Цитата:
И еще вопрос. Как узнать текущую букву диска, с которого происходит запуск батника?

К примеру, так:
%CD:~0,2%%
 
А по поводу одновременности - ну, на мой взгляд, АБСОЛЮТНО одновременно - невозможно...

Всего записей: 426 | Зарегистр. 23-11-2004 | Отправлено: 16:57 08-09-2006
GarEx

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

Всего записей: 16 | Зарегистр. 03-08-2006 | Отправлено: 17:02 08-09-2006
Kirillhome



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
GarEx
Так ведь ты так и написал:

Код:
 
start asdf.bat
start qwer.bat
 

qwer.bat "стартанёт" не дожидаясь завершения asdf.bat

Всего записей: 426 | Зарегистр. 23-11-2004 | Отправлено: 17:23 08-09-2006
GarEx

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А что по поводу значка?

Всего записей: 16 | Зарегистр. 03-08-2006 | Отправлено: 17:27 08-09-2006
ViSiToR



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

Цитата:
А что по поводу значка?

Вот один батничек (точнее он не совсем один ) - Reg Add For Create BATHiK, который пишет в реестер запись, это для того, чтобы потом можно было кликнуть правой кнопкой мыши, и в подпункте “Создать”, можно было создовать новые батники. А также, он создаёт иконку к батнику, если нужно поменять иконку, то до запуска батника, нужно подставить под иконку которая лежит рядом с ним, другую-свою, но с таким же именем (или менять имя в батнике). Иконка изменится после рестарта системы, но зато пункт появится секунд 20 после установки батника (или после пару нажатии на подпункт “Создать”). Иконку конечно можно будет и не устанавливать, я специальнол сделал выбор (батник будет спрашивать перед установкой иконки), т.к изначально я расчитывал что батник будет прописывать пункт в “Создать”.

----------
ViSiToR a.k.a CreatoR
CreatoR это не ник, CreatoR это стиль жизни!

Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 18:33 08-09-2006
PerpleXOR



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
2 Smitis
Спасибо, твой вариант почти сработал. Надо указывать полный путь к исполняемому файлу. То есть чтобы применить удаленно reg файл надо написать:
 
psexec -s \\remote_machine -d c:\windows\regedit /s c:\ie.reg

Всего записей: 741 | Зарегистр. 17-07-2005 | Отправлено: 11:19 09-09-2006
Smitis



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


Цитата:
Цитата:P.S. И не надо задовать один и тот же вопрос в разных темах!  
 
горю, приходится ускорять решение вопроса!  

Это не ускорит решение вопроса, а наоборот, замедлит! Потому что напрягает отвечающих Суди сам. Допустим, я читаю вопрс в какой-либо теме и знаю на него ответ. Я трачу своё время отвечаю (очень часто перед ответом требуется проверка, скажем, того же скрипта, ну чтобы самому не ошибиться). Потом читаю другую тему и вижу, что там уже эта проблема давно решилась. Буду я тебе отвечать в следующий раз? Скорее всего нет. Более того, увидев один и тот же вопрос в разных темах, если ещё не ответил, то и отвечать не буду, ибо создаётся впечатление, что спрашивающий сам не знает, чего хочет.

Всего записей: 3177 | Зарегистр. 09-02-2003 | Отправлено: 16:56 09-09-2006 | Исправлено: Smitis, 17:00 09-09-2006
Shish_kebab



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Kirillhome
webfile.ru/1098186

Всего записей: 372 | Зарегистр. 14-07-2005 | Отправлено: 20:04 09-09-2006
hhr

Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
подскажите, плиз, как вместо

Код:
 
md new_folder
copy old_folder\*.* new_folder
rd old_folder
 

использовать что-то более короткое?
иначе говоря, как переместить папку?

Всего записей: 289 | Зарегистр. 20-03-2005 | Отправлено: 22:09 09-09-2006
Kirillhome



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Shish_kebab
После небольшой проверки вот что получилось
Сразу вопросы - изначально хотелось

Цитата:
Нужно из кучи файлов скопировать файл созданный сегодня.
Файл находиться в дериктории c:\Program Fails\......
Ещё как вариант файл созданный сегодня вчера и позавчера ?  

1) скопировать из "c:\Program Files\", а не из c:\ (Set PATH_POISK="c:\!")
2) файл, созданный сегодня, а не 30 дней назад (set /A Day_Min=30)

Всего записей: 426 | Зарегистр. 23-11-2004 | Отправлено: 23:10 09-09-2006 | Исправлено: Kirillhome, 23:39 09-09-2006
Refugee

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Shish_kebab
Копировать по времени очень удобно xxcopy:
только вчерашние
xxcopy /da#1 /db#1 /fc /SGF  "c:\program files" "куда"
позавчерашние и более поздние
xxcopy /da#2 /fc /SGF  "c:\program files" "куда"
 
Kirillhome
Зачем писать set /A Day_Min=30  ?
строка "30" будет преобразована в точно такую же. Переменные могут хранить только строки. Разница будет только на восьмеричных числах типа 01.

Всего записей: 513 | Зарегистр. 31-03-2004 | Отправлено: 02:51 10-09-2006
Kirillhome



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

Цитата:
Зачем писать set /A Day_Min=30  ?  

Привычка для себя обозначать то, что будет "цифрами" (участвовать в вычислениях)
 

Цитата:
Копировать по времени очень удобно xxcopy

А xxcopy где взять???

Всего записей: 426 | Зарегистр. 23-11-2004 | Отправлено: 10:32 10-09-2006
Refugee

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Kirillhome
>А xxcopy где взять???
На офсайте freeware edition, или в варезнике.

Всего записей: 513 | Зарегистр. 31-03-2004 | Отправлено: 15:43 10-09-2006
Mayskii



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

Цитата:
подскажите, плиз, как вместо  
 
Код:  
md new_folder  
copy old_folder\*.* new_folder  
rd old_folder  
 
 
 
использовать что-то более короткое?  
иначе говоря, как переместить папку?

 
Попробуй так:
после  
new_folder\  
 
поставь слэш, должно сработать.
 
 
 
 
 

Всего записей: 101 | Зарегистр. 27-06-2006 | Отправлено: 16:08 10-09-2006
Reznikoff

Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Здраствуйте товарищи. вот такой скрипт на 98 окне.

Код:
 
@echo off
echo Press N to load windows 98 now or white 5 minutes and Windows 98 will load
choice /N /C:yn
cls
 
if errorlevel 1 goto sleep
if errorlevel 2 goto end
 
:sleep
echo White 5 minutes...
sleep 300
echo end
 
:end
echo Button pressed
pause
 

 
 
проблема в том, что если нажать n то всегда срабатывает условие :sleep (хотя должно срабатывать условие :end). Почему?
 
Второй вопрос.
Допустим запустился sleep 60 и комп спит 60 секунд и далее что то делает.
Надо в это время (пока он спит) нажать какую-то кнопку (юзер нажимает кнопку), и система что то сделает (как минимум прервет свой сон и выполнит мою команду, которая висит на этой кнопке. как сделать?)

Всего записей: 62 | Зарегистр. 18-07-2005 | Отправлено: 09:46 11-09-2006 | Исправлено: Reznikoff, 09:47 11-09-2006
Kirillhome



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

Цитата:
проблема в том, что если нажать n то всегда срабатывает условие :sleep (хотя должно срабатывать условие :end). Почему?  

Возможно, из-за CLS после CHOICE...

Всего записей: 426 | Зарегистр. 23-11-2004 | Отправлено: 10:45 11-09-2006
Shish_kebab



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

Цитата:
1) скопировать из "c:\Program Files\", а не из c:\ (Set PATH_POISK="c:\!")  

Для пробы поставил ! а в рабочем исполнении из c:\Program Files\

Цитата:
Копировать по времени очень удобно xxcopy:  
только вчерашние  

В том то и дело что нужно сегодняшние из кучи файлов
 
---
Что то он у меня весь диск прошаривает ???
 
Добавлено:
Вот лог того, что происходит при выполнении, создал вертуальный диск u: и запустил
webfile.ru/1101000

Всего записей: 372 | Зарегистр. 14-07-2005 | Отправлено: 20:20 11-09-2006 | Исправлено: Shish_kebab, 20:27 11-09-2006
Kirillhome



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

Цитата:
Что то он у меня весь диск прошаривает ???  

С пути поиска и вниз...
А что, нужно только в указанной директории??? Что в поддиректориях - не интересует?
Тогда вместо

Код:
 
FOR /R %PATH_POISK% %%a IN (*.*) DO @Call :MY_DEL "%%a" %%~ta
 

 

Код:
 
FOR %%a IN (%PATH_POISK%\*.*) DO @Call :MY_DEL "%%a" %%~ta
 

 
 
А только для сегодняшней даты (не универсальный вариант) - совсем просто:

Код:
 
@Echo Off
Set PATH_POISK="D:\Temp\tekst3\"
 
set T_Date=%DATE%
 
rem Для поиска в каталоге, указанном в PATH_POISK
rem и во всех его подкаталогах - FOR /R
FOR /R %PATH_POISK% %%a IN (*.*) DO @Call :MY_DEL "%%a" %%~ta
 
rem Для поиска в каталоге, указанном в PATH_POISK
rem НЕ ищя в его подкаталогах - FOR  
rem FOR %%a IN (%PATH_POISK%\*.*) DO @Call :MY_DEL "%%a" %%~ta
GoTo :EOF
 
:MY_DEL
SET F_DATE=%2
if %F_DATE%==%T_Date% (copy %1 c:\)
 
GoTo :EOF
 


Всего записей: 426 | Зарегистр. 23-11-2004 | Отправлено: 21:10 11-09-2006
   

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101

Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах
vu1tur (14-11-2006 16:59): http://forum.ru-board.com/topic.cgi?forum=62&topic=9040


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru