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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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 | Цитировать | Сообщить модератору
anvarga
 
Удаление каталога.
 
RMDIR [/S] [/Q] [диск:]путь
RD [/S] [/Q] [диск:]путь
 
/S      Удаление дерева каталогов, т. е. не только указанного каталога, но и всех содержащихся в нем файлов и подкаталогов.
 
/Q      Отключение запроса подтверждения при удалении дерева каталогов с помощью ключа /S.

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



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

Цитата:
17.08.2006 10:00 - т.е чтобы в таком случае, не добавлялся ноль... или как прописать формат времени, в двойном виде (ЧЧ).

Настройте ормат времени/даты в региональных настройках

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



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
ViSiToR
В каком случае добавляется???
 
При региональных настройках времени
H:mm:ss
 
Ставлю время 9:00
Получаю папку
2006-08-17 09-00
 
Ставлю время 10:00
Получаю папку
2006-08-17 10-00
 
Ставлю время 0:00
Получаю папку
2006-08-17 00-00
 
Изменил региональные настройки времени на
HH:mm:ss (потом еще и на HH:m:ss) - всё тоже самое - папка получается именно в формате ГГГГ-ММ-ДД ЧЧ-ММ

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



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Kirillhome
KapralBel
Спасибо! Но я кажется написал :
 

Цитата:
Вот как бы сделать чтобы 0, добовлялся только в начало времени (если текущее время, имеет одну цифру в начале - 9:00 - т.е если в региональных Стандартах не указанно время как ЧЧ)?

 
А anvarga просил очистить корзину, а не удалить папку. Вот такое я к сожалению не знаю как сделать хотя интересно бы узнать.

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

Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 15:01 17-08-2006
Kirillhome



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
ViSiToR
Может я чего-то не понимаю, но у меня даже при региональной настройке H:mm:ss
результатом выполнения %time% получается строка, в которой под часы - два символа.
До 10 часов - первый символ пробел, который и заменяется на ноль  
Код:
set dty=%dtx: =0%

Всего записей: 426 | Зарегистр. 23-11-2004 | Отправлено: 15:13 17-08-2006 | Исправлено: Kirillhome, 15:14 17-08-2006
ViSiToR



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

Цитата:
первый символ пробел, который и заменяется на ноль  

Вот я и хочю чтобы там не было нуля, а чтобы был пробел, а ноль чтобы был перед часом:
 
17.08.2006 09:00

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

Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 15:22 17-08-2006
Kirillhome



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

Код:
 
set dtx=%date:~6,4%-%date:~3,2%-%date:~0,2%_%time:~0,2%-%time:~3,2%
 

получаем (в случае 2006/08/17, 9:00)
2006-08-17_пробел9-00
 

Код:
 
set dty=%dtx: =0%
 

получаем (в случае 2006/08/17, 9:00)
2006-08-17_09-00
 

Код:
 
set dt=%dty:_= %
 

получаем (в случае 2006/08/17, 9:00)
2006-08-17пробел09-00
 

Код:
 
md "%dt%"
 

получаем (в случае 2006/08/17, 9:00) папку 2006-08-17пробел09-00

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



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Kirillhome
Странно, но в каком то времени, у меня добовлялся ещё 0 (ноль) в конец имени папки... теперь всё нормально.. спасибо!

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

Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 16:06 17-08-2006
KapralBel



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

Цитата:
А anvarga просил очистить корзину, а не удалить папку. Вот такое я к сожалению не знаю как сделать хотя интересно бы узнать.

 

Цитата:
 Маленький вопросик.  Как бат-файлом очистить корзину? Сам он может находиться где угодно. И удалить каталог, имя и путь которого уже прописано в батнике.  

 
1-е ответ был как удалить папку
2-е если удалить папку корзины - она (корзина) почиститься . Сама папка корзины будет автоматически создана при следующем удалении в неё

Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 16:44 17-08-2006
ViSiToR



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

Цитата:
если удалить папку корзины - она (корзина) почиститься

А если корзина общая, т.е на все диски одна корзина, тогда где хранится её папка?

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

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



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

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



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

Цитата:
А если корзина общая, т.е на все диски одна корзина, тогда где хранится её папка?
- насколько видел, обычно вынь создает на каждом "диске" (разделе) отдельную корзину в его корне.  
Есть, вообще-то некий твик реестра, позволяющий пеерименовывать корзину, но как помнимаю, не её местоположение менять.
 

Код:
[HKEY_CLASSES_ROOT\CLSID\\{645FF040-5081-101B-9F08-00AA002F954E}\ShellFolder]
"Attributes"=hex:50,01,00,20


Всего записей: 16269 | Зарегистр. 13-02-2003 | Отправлено: 20:29 17-08-2006
Refugee

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Kirillhome
setlocal enabledelayedexpansion
call :Len str
echo !Len!
goto :Eof
 
:Len
set Str=%1
set Len=0
:Loop
if "!Str!"=="" goto :Eof
set /a Len=!Len!+1
set Str=!Str:~1!
goto Loop
 
или вызывать jscript - WScript.Echo( WScript.Arguments(0).length);

Всего записей: 513 | Зарегистр. 31-03-2004 | Отправлено: 22:27 17-08-2006
Kirillhome



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Refugee
Спасибо, я примерно по такому пути и пошёл..
 
ViSiToR

Цитата:

Код:
 
@echo off
chcp 1251
find /i /c "Привет Мир" "test.tmp" | find /c ": 0" > f.tmp  
for /f %%i in (f.tmp) do if %%i==0 echo ok > ok.tmp  
del /q f.tmp & exit
 

 
Этот батник, делает поиск в файле test.tmp, и по идее, он должен находить строчку содержащую "Привет Мир", и если слова были найдены, то создаётся файл ok.tmp как метка...
 
Но приведённый мной пример, сработает только если файл в котором происводится поиск, в кодировке ANSI, если он в кодировке UTF-8, то поиск не осуществляется - в принципе это я и хочю решить.

 
Я, похоже, решил (не красиво, но.. - решил) перекодировку в UTF-8
Батник спрятан здесь
Работает не для всех символов, увы (ну, к примеру, нет кавычек, псевдографики и еще ряда символов) - но работает...
 
Да, ещё - ищет строго в том регистре, в котором написана строка поиска... (Если есть ДОМ в тексте с кодировкой UTF-8, а ищем дом - то увы, результат поиска будет отрицательным)... Наверное, и это можно побороть, но количество переборов и, следовательно, время выполнения будет стремиться к бесконечности...

Всего записей: 426 | Зарегистр. 23-11-2004 | Отправлено: 02:22 18-08-2006 | Исправлено: Kirillhome, 02:58 18-08-2006
anvarga

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

Всего записей: 6 | Зарегистр. 17-08-2006 | Отправлено: 10:48 18-08-2006
xitsa



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

Цитата:
Как можно в текстовом файле найти число и поменять его на другое ГЛАВНОЕ ЧТОБЫ ФАЙЛ ОСТАЛСЯ ТАКИМ КАК ОН БЫЛ ДО ИЗМЕНЕНИЯ ТОЛЬКО УЖЕ С НОВЫМ ЧИСЛОМ    
ЕСЛИ МОЖНО ПРИМЕР ПЛИЗЗЗЗ  
 

 
Не заметил ответа, попробуй это:
 
ssed.exe -e "s/\<121\>/1331/g" Input.txt >Output.txt
 
Заменяется число 121, которое стоит отдельно на 1331.
 
ssed — SuperSED Взять можно здесь

Всего записей: 103 | Зарегистр. 25-04-2006 | Отправлено: 11:01 18-08-2006 | Исправлено: xitsa, 11:06 18-08-2006
GreaseOD

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Пытаюсь изменить слов в текстовом файле. Сделал следующее:
d.bat
****************************
for /F "eol=; tokens=1,2,3,4" %%i in (myfile.txt) do  set str1=%%l  
echo %str1%
%var:str1=%  
set new=%str1:07=09% (меняю ('200607') на ('200609')
%new%  
*******************************
 
 
myfile.txt
******************************
Hello World 1 2 3
how are you 3 4 5 6  
qwe qwe qwe ('200607')
**********************************
 
Все меняется, (в переменной %new%), но КАК ЭТУ ПЕРЕМЕННУЮ ЗАСУНУТЬ ОБРАТНО В MYFILE.TXT НА ЭТОЖЕ МЕСТО И ЧТОБЫ ВСЕ ОСТАЛЬНЫЕ СЛОВА ОСТАЛИСЬ ТОЖЕ НА СВОИХ МЕСТАХ, И ЕЩЕ ВСЕ ЭТО СОХРАНИТЬ???????????????????????

Всего записей: 30 | Зарегистр. 10-08-2006 | Отправлено: 11:25 18-08-2006
Open999

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

Всего записей: 3 | Зарегистр. 18-08-2006 | Отправлено: 11:46 18-08-2006
KapralBel



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Open999
Если не критично расположение файлов именно в этой папке, делай следующее
Копируй файл в нужный каталог
А затем перемещай файл из IN в IN\Parsed

Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 12:46 18-08-2006
anvarga

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

Всего записей: 6 | Зарегистр. 17-08-2006 | Отправлено: 12:56 18-08-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