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

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

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

Widok (10-03-2009 12:39): Лимит страниц. Продолжаем здесь.  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 102 103 104 105 106 107 108

   

Widok



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

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

Всего записей: 24190 | Зарегистр. 07-04-2002 | Отправлено: 12:08 19-11-2007 | Исправлено: Dmitriy05, 22:49 13-04-2008
mavzer12

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите решить проблему! Вот есть команда del /F /Q *.wav она удаляет все файлы (.wav) находящиеся в данной папке  
Можно как нибудь сделать чтобы файлы удалялись и из подпаппок . А папок много.
 
Я использовал команду с oggdec.exe  for /r %%a in (*.ogg) do oggdec.exe "%%a"   а оригиналы остались

Всего записей: 10 | Зарегистр. 03-06-2008 | Отправлено: 08:06 28-02-2009
Maza_Faka



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

Цитата:
 
Del /?
/S Удаление указанных файлов из всех подкаталогов
 

Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 09:05 28-02-2009 | Исправлено: Maza_Faka, 09:06 28-02-2009
El Sanchez



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

Цитата:
Требуется организация батника!  
В разделе реестра HKLM\SOFTWARE\microsoft\windows\curentversion\uninstall\  
существуют разделы для удаления программ, например такого вида {7f....db527}  
в которых несется информация о продукте (publisher) и ключ для удаления (uninstallString)  
Как найти необходимый продукт из массы {7f....db527} со строковым параметром (publisher) и при нахождении вытянуть строковый параметр для удаления (uninstallString)  
Очень нужно - ПОМОГИТЕ!

 
Вот пример батника, выводит в файл log.log разделы вида {7f....db527}, значения ключей Publisher и UninstallString (если они есть). Ввиду того, что значение UninstallString может быть сложным для обработки батником, в некоторых местах лога пишется лишняя строчка с No data. Может кто доделает сценарий.

Код:
@echo off
set "regstr=HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"
setlocal EnableDelayedExpansion
for /f "tokens=7* delims=\" %%a in ('reg query %regstr% /s^|find "%regstr%\{" 2^>nul') do (
echo %%a>>log.log
reg query !regstr!\%%a /v Publisher|find "Publisher" 2>nul&&call :getvar1 "%%a" Publisher||(echo Publisher: No data.>>log.log)
reg query !regstr!\%%a /v UninstallString|find "UninstallString" 2>nul&&call :getvar2 "%%a" UninstallString||(echo UninstallString: No data.>>log.log)
echo.>>log.log
)
goto :eof
:getvar1
for /f "tokens=*" %%b in ('reg query !regstr!\%~1 /v %2^|find "%2" 2^>nul') do (
set "tempvar=%%b"
echo Publisher: !tempvar:~17!>>log.log
goto :eof
)
:getvar2
for /f "tokens=*" %%c in ('reg query !regstr!\%~1 /v %2^|find "%2" 2^>nul') do (
reg query !regstr!\%~1 /v %2|find "REG_SZ" 2>nul&&(set tempvar=%%c&echo UninstallString: !tempvar:~23!>>log.log)
reg query !regstr!\%~1 /v %2|find "REG_EXPAND_SZ" 2>nul&&(set tempvar=%%c&echo UninstallString: !tempvar:~30!>>log.log)
goto :eof
)
endlocal
:eof
 

Всего записей: 341 | Зарегистр. 23-12-2008 | Отправлено: 13:04 28-02-2009
KYMichael

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

Код:
set /a counter=!counter!+1
 
if !counter!==!line! echo %VAR%

т.е. нет реакции на наличии знаков "!", а также set /a - нечего не делает
 
В чём может быть причина?
 
P.S.  setlocal EnableDelayedExpansion - присутствует
OS: XP  и Vista

Всего записей: 36 | Зарегистр. 25-08-2007 | Отправлено: 02:16 03-03-2009
Maza_Faka



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

Код:
 
@Echo Off
 
Set VAR=YES
Set counter=0
Set line=1
 
Setlocal EnableDelayedExpansion
 
set /a counter=!counter!+1
if "!counter!"=="!line!" echo %VAR%
 

Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 06:50 03-03-2009
El Sanchez



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Переменная %var% должна быть изменена на !var!

Всего записей: 341 | Зарегистр. 23-12-2008 | Отправлено: 10:35 03-03-2009
TechnicsKuzya



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Может кому пригодится, тут описан авторский скрипт для сборника обновлений...

Всего записей: 495 | Зарегистр. 02-02-2008 | Отправлено: 14:28 03-03-2009
vitrzn



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите советом!
есть батник:
 
md \1\
md \2\2\
md \3\3\3\
 
потом идёт сортировка файлов по созданым папкам
но не всегда есть файлы которые нужно переместить в соот папку
и в итоге остаётся вложенная пустая папка
 
Вопрос! Как можно удалить пустую папку, в том числе и вложенную
В итоге должно остаться ТОЛЬКО папки с файлами.

Всего записей: 1358 | Зарегистр. 28-10-2007 | Отправлено: 20:14 03-03-2009
KYMichael

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Maza_Faka, El Sanchez
 
Спасибо!
 
Оказалось, что я сам ступил
 

Всего записей: 36 | Зарегистр. 25-08-2007 | Отправлено: 21:32 03-03-2009
Maza_Faka



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

Цитата:
Помогите советом!

Попробуй так:

Код:
 
@Echo Off
 
Set "Folder=c:\Test"
 
Call :SubDir "%Folder%"
GoTo :EOF
 
:SubDir
For /D %%B In ("%~1\*.*") Do (
  Call :SubDir "%%B"
  Dir "%%B" /B /A:-D>Nul 2>&1 || RD /Q "%%B">Nul 2>&1
)
 

Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 12:43 04-03-2009
KYMichael

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

Код:
 
...
SET mailer=c:\Program Files\The Bat!\thebat.exe
 
 
"%mailer%" "/MAILU=%OutBox%;QUEUE;TO=%ADDR%;S=%subj%;TEXT=%letter%;FILE=%MAttach%"
 

 
Такой код выдаёт ошибку: Не найден файл c:\Program Files\The Bat\thebat.exe
 
Почему-то удаляется символ "!"
 
Кто может подсказать в чём дело? И как обойтись без переустановки "The Bat!" в другой каталог?
 

Всего записей: 36 | Зарегистр. 25-08-2007 | Отправлено: 19:21 04-03-2009
Maza_Faka



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

Цитата:
Такой код выдаёт ошибку

А если заключить переменную в кавычки?

Код:
 
SET "mailer=c:\Program Files\The Bat!\thebat.exe"
 

Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 07:37 05-03-2009 | Исправлено: Maza_Faka, 07:38 05-03-2009
igor_andreev

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Maza_Faka
Да у него скорей всего, как обычно - enabledelayedexpansion в начале батника...

Всего записей: 1672 | Зарегистр. 08-12-2004 | Отправлено: 07:47 05-03-2009
xitsa



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Подскажите, а как сделать так, чтобы можно было указать имя файла в unicode?
т.е. что-то вроед dir /.../греческие буквы/..../папка

Всего записей: 103 | Зарегистр. 25-04-2006 | Отправлено: 08:29 05-03-2009
vitrzn



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Maza_Faka
В самый раз !!!
СПС.

Всего записей: 1358 | Зарегистр. 28-10-2007 | Отправлено: 09:16 05-03-2009
01MDM



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

Цитата:
Подскажите, а как сделать так, чтобы можно было указать имя файла в unicode?

Для этого необходимо запустить командную оболочку в юникодном режиме `cmd /u`. И шрифт тоже должен содержать эти символы (Lucida Console)

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



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите!
Как сделать проверку %1?
т.е. необходимо проверить использовался ли дополнительный ключ при запуске батника, например "start.bat 1" или "start.bat 2" - если есть то использовать одну процедуру если же нет ключа то другую?
Помогите этот методп впоймать. Меня только хватило на описание всех возможных ключей, а как узнать есть ли он вообще?
 
Добавлено:
И еще один вопросик!
Как автоматизировать очистку лишних пробелов в тхт-файле вида Подробнее....
Пробелы встречаются в основном только в суммах .????

Всего записей: 884 | Зарегистр. 04-09-2008 | Отправлено: 11:52 05-03-2009
Maza_Faka



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

Код:
 
@Echo Off
 
If "%~1"=="" (
Echo Called without param
)  Else  (
Echo Called with param: %1
)
 

 
Добавлено:
Kilyan

Цитата:
Как автоматизировать очистку лишних пробелов в тхт-файле

Если религия\карма позволяют использовать сторонние утилиты, то можно так:

Код:
 
Sed "s/[ ]\{2,\}/ /g" < test.txt > result.txt
 

Sed можно взять здесь

Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 12:03 05-03-2009
rBBWYwg



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как вывести список поддиректорий определенной папки в чистом виде (каждая поддиректория в отдельной строке, без другой информации, получаемой при выполнении dir FOLDER >list.txt)?

Всего записей: 23 | Зарегистр. 14-10-2008 | Отправлено: 13:51 05-03-2009
Maza_Faka



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

Код:
 
Dir c:\windows /b /s
 

?

Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 14:29 05-03-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 102 103 104 105 106 107 108

Компьютерный форум Ru.Board » Компьютеры » Программы » Командная строка, батники, сценарии (bat, cmd) 2
Widok (10-03-2009 12:39): Лимит страниц. Продолжаем здесь.


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru

Рейтинг.ru