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

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

Модерирует : gyra, Maz

Widok (03-03-2010 16:29): Лимит страниц. Продолжаем здесь.  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

Widok



Moderator-Следопыт
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Командная строка, батники\сценарии (bat, cmd)
(часть 1) (часть 2)
Вопросы, задачи и их решения по работе с командной строкой, файлами, а также сопутствующие ссылки.

 
Важно: копируя батник через буфер обмена из форума не забывайте удалять пробелы в конце каждой строки, т.к. в некоторых случаях из-за этого программа будет работать неправильно!!!
 
Примечание: Большие куски кода заключайте в тэг [more]  
 
Смежные темы:
В помощь системному администратору » Автоматизация администрирования
Microsoft Windows » Задачи на bat-файлах 5
 
Полезные ссылки:
· Cmd. Описание от разработчиков
· Урок bat-аники (для начинающих)
· Курс лекций для начинающих. Полезно и просто описано
· Набор GNU утилит для win32
· Пакет утилит для организации интерфейса в bat-файлах
· Использование ansi.sys
· cmdow — изменение параметров и видимости дос-окна
· blat — отправка почты из консоли
· Справка по командам в виде Html
· Команды RunDll32
· Quick Batch File Compiler - Позволяет превратить ваш батник в независимое приложение
· Пример - получение и обработка списка пользователей
· Уильям Станек - Командная строка Microsoft Windows (вплоть до w2k3)
· Простой способ получать текущую дату всегда в одном формате (не зависит от языков и настроек)
· Переход из 32-битной версии cmd.exe в 64-битную

Всего записей: 24190 | Зарегистр. 07-04-2002 | Отправлено: 12:38 10-03-2009 | Исправлено: TechnicsKuzya, 13:54 27-12-2009
guru431

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите решить задачу:
В корне диска "С:" есть некая папка, имя которой может быть любым. В этой папке находится другая папка, имя которой всегда одинаково - "Folder". В папке Folder всегда будет лежать файл с именем - "Files.txt".
Вопрос: нужет батник, который найдет и удалит эту папку (имя которой неизвестно) со всем её содержимым.

Всего записей: 64 | Зарегистр. 28-02-2007 | Отправлено: 18:03 08-04-2009
01MDM



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

Код:
 
@echo off
for /d %%i in (C:\*) do (
 
    dir /b "%%i\Folder\files.txt" 2>nul 1>&2 && rd /s /q "%%i"
 
)
 


Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 19:33 08-04-2009
guru431

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
01MDM
Спасибо!!!
 
И еще один маленький вопрос:
Есть, к примеру, папка Temp. Как можно удалить все папки, находящиеся в ней, а саму Temp оставить?
 
del /f /s /q "Temp\*" - это удаляет только файлы
rd /s /q "Temp\*" - а это не работает

Всего записей: 64 | Зарегистр. 28-02-2007 | Отправлено: 09:52 09-04-2009
01MDM



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

Код:
 
@echo off
pushd "C:\Temp"
rd /s /q "." 2>nul
popd
 


Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 10:02 09-04-2009
GGS



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
01MDM
IMHO, необходимо выполнять проверку наличия "C:\Temp"  
Если этой папки нет, текущий каталог C:\ ?
Страшно представить...  

Всего записей: 1000 | Зарегистр. 25-03-2002 | Отправлено: 17:41 09-04-2009
01MDM



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
GGS
Это просто пример, но в данном случае конечно ты прав.

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 18:46 09-04-2009
LEDRA

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вечер добрый у меня глобальный вопрос... не знаю возможно ли реализовать, но всеже рискну спросить.
 
Есть текстовый файл вида
 
xxxxxx
<nomer>-3.656135812678,56.543534534533</nomer>
yyyyyy
 
и.т.д - номера разные. Задача - нужно обрезать номера до 3х знаков после точки.
xxxxxx и yyyyy - некоторый любой текст
 
результат должен быть
 
xxxxxx
<nomer>-3.656,56.543</nomer>
yyyyyy
 
Возможно?
 
 

Всего записей: 228 | Зарегистр. 23-01-2006 | Отправлено: 22:04 09-04-2009
D555



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
>>>Подскажите пожалуйста, есть ли какой-нибудь способ - прописать в батнике - чтобы  
>>окно работы батника вообще не выводилось(не появлялось) на мониторе ?  
 
 
... видимо "молчаливого" режима исполнения, силами самого батника нету((
а может есть вариант команд батника для его запуска свёрнутым в панель задач ?

Всего записей: 375 | Зарегистр. 17-04-2003 | Отправлено: 07:24 10-04-2009
svradmin



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ребята помогите решить задачу, нужно имени файла задать переменную без расширения(только имя = переменная),файл находится на сетевом ресурсе \\server\share\файл с любым именем.dbf, пишу батник здесь споткнулся и дальше не продвинусь из за этого

Всего записей: 20 | Зарегистр. 10-03-2007 | Отправлено: 10:17 10-04-2009
Maza_Faka



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

Цитата:
видимо "молчаливого" режима исполнения, силами самого батника нету

HSTART
 
svradmin

Цитата:
нужно имени файла задать переменную без расширения

Пример:

Код:
 
@Echo off
 
Set FilePath=\\server\share
Set File=MyFile.dbf
 
For /F "Tokens=*" %%A In ('Dir /B %FilePath%\%File%') Do Set FileName=%%~nA
 
Echo %FilePath%\%FileName%
 

Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 11:31 10-04-2009
svradmin



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

Всего записей: 20 | Зарегистр. 10-03-2007 | Отправлено: 12:05 10-04-2009
Zakkazak



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Нужно обработать файл проектов Оффлайн браузера. Сам файл обычный, ini-файл. В файле храниться 2 типа объектов - проекты и папки содержащие их.
 
Проблема: удалить в файле все проекты и папки не содержащие свойство Descr=  
 
фрагмент файла

Всего записей: 995 | Зарегистр. 12-01-2005 | Отправлено: 15:05 10-04-2009 | Исправлено: Zakkazak, 20:03 10-04-2009
Maza_Faka



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

Цитата:
Нужно обработать файл проектов Оффлайн браузера

Пример:

Код:
 
@Echo off
 
Type test.ini |Find /I "Descr=">>tmp.ini
Del /F /Q test.ini
Ren tmp.ini test.ini
 

Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 17:29 10-04-2009
Zakkazak



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Maza_Faka
спасибо что нашел время,  
скрипт отбирает строки начинающиеся на Descr=, и только
Нужно чтоб, скрипт отбирал все секции ([Object]) содержащие строку Descr=.

Всего записей: 995 | Зарегистр. 12-01-2005 | Отправлено: 19:21 10-04-2009
01MDM



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Zakkazak
Не знаю насколько быстро и корректно будет работать, в твоем ini встречаются специальные символы, которые приводят к ошибке, но секция с "Deskr" удаляется:

Код:
 
@echo off
setlocal
 
for /f "tokens=1,2 delims=:" %%i in ('findstr /n "\[" 1.ini') do call:parse %%i %%j
move 1.tmp 1.ini
goto:eof
 
:parse
for /f "tokens=*" %%i in ('more +%1 1.ini') do (
    echo %%i | findstr "\[" 1>nul && goto:next
    echo %%i | findstr "Descr=.*" 1>nul && goto:eof
)
 
:next
echo %2 1>>1.tmp
for /f "tokens=*" %%i in ('more +%1 1.ini') do (
    echo %%i | findstr "\[" 1>nul && goto:eof || echo %%i 1>>1.tmp
)
 

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 23:03 10-04-2009
Zakkazak



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

Цитата:
Не знаю насколько быстро и корректно будет работать,
Да, подозрительно долго обрабатывает... ждал где-то 5 минут, затем завершил вручную . Не должно быть так долго - размер файла небольшой (150 кб)
 
Выкладываю файл на рапидшару, может я что-то не так описал:
http://rapidshare.com/files/219831425/WebDown.dat.html

Всего записей: 995 | Зарегистр. 12-01-2005 | Отправлено: 01:45 11-04-2009
Zakkazak



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

Цитата:
, но секция с "Deskr" удаляется:

если ты не заметил, именно эти секции мне и нужны - они не должы удаляться

Всего записей: 995 | Зарегистр. 12-01-2005 | Отправлено: 11:05 11-04-2009
01MDM



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

Цитата:
именно эти секции мне и нужны - они не должы удаляться

 
Только с помощью сторонних утилит. Тебе нужены sed и nircmd. Штатными средствами сложный ini не отпарсить.
Здесь тоже возможны ошибки, некогда проверять:

Код:
 
@echo off
setlocal
 
copy WebDown.dat ~WebDown.ini  
 
for /f "tokens=1 delims=:" %%i in ('findstr /n /c:"[Object]" ~WebDown.ini') do (
    call:sec %%i
)
 
for /f "tokens=1 delims=:" %%i in ('findstr /n "\<Descr=.*" ~WebDown.ini') do (
    call:find %%i
)    
 
set "sections=%sections:~1%"
for /l %%i in (1,1,%cnt%) do (
    for %%j in (%sections%) do if %%j==%%i (set "del=no")
    call:del %%i  
)
 
sed -i "s/\[Object-.*\]/\[Object\]/" ~WebDown.ini
type ~WebDown.ini | more 1>WebDown.ini
del ~WebDown.ini
 
:: Расскоментируй, если результат устраивает  
:: move WebDown.ini WebDown.dat
goto:eof
 
:sec
set /a cnt+=1
sed -i "%1 s/\[Object\]/\[Object-%cnt%\]/" ~WebDown.ini
goto:eof
 
:find
for /f "tokens=2 delims=-]" %%i in ('
        more +%1 ~WebDown.ini ^| findstr "\[Object-.*\]" 2^>nul
    ') do (
        set /a num=%%i-1
        goto:set
)
 
:set
set "sections=%sections%,%num%"
goto:eof
 
:del
if not "%del%"=="no" (
nircmdc inidelsec "Full\Path\To\~WebDown.ini" "Object-%1"
)
set "del="
 


Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 14:45 11-04-2009
guru431

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Нужна помощь:
 
Есть путь в реестре:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Security Center\Svc\%%A ,
где %%A - ID пользователя, их может быть несколько
На раздел Svc права ограничены даже админам.
 
Вопрос:
Как дать группе администраторов права на запись в эти разделы (надо вначале стать владельцем раздела) и во всех %%A создать следующий ключ с параметром "EnableNotifications"=dword:00000000 ?

Всего записей: 64 | Зарегистр. 28-02-2007 | Отправлено: 16:50 11-04-2009 | Исправлено: guru431, 18:54 11-04-2009
FROST20

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте..Прочитал страниц 50 ветки но не нашел пока чего нужно мне..Вопрос у меня легкий по сравнению с тем что уже обсуждалось.. Как скопировать в папку все файлы с расширением txt созданные по четным дням недели прошлого года.. пожалуйста помогите оч надо..

Всего записей: 1 | Зарегистр. 11-04-2009 | Отправлено: 22:43 11-04-2009
   

Страницы: 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 » Компьютеры » Программы » Командная строка, батники, сценарии (bat, cmd)
Widok (03-03-2010 16:29): Лимит страниц. Продолжаем здесь.


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

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.Board
© Ru.Board 2000-2020

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru