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

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

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

Widok (19-11-2007 12:08): лимит страниц. продолжаем здесь  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 109 110 111 112 113 114 115 116 117 118

   

KLASS



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

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

Всего записей: 9732 | Зарегистр. 12-10-2001 | Отправлено: 04:28 24-09-2002 | Исправлено: Elroir, 19:35 11-09-2007
Maza Faka



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

Цитата:
Всё решено, сенкс


Цитата:
Необходимо выполнить двойную сортировку по расширению и имени

Так ведь задачка-то не решена, если следовать твоему условию
 
Добавлено:
Nekt

Цитата:
что за команда убивает процесс?

Taskkill /?

Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 07:56 08-09-2007
Rotorina



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Maza Faka
Я её модернизировал
 
Добавил позже :
Как автоматизировать определение PID только что запущенного процесса из этого же батника и убивать процесс по PID-y?
 
Суть, в том, что постоянно запускается процес, например, ping, c разных батничков.

Код:
 
start /b ping google.com
taskkill /f /im ping
 

Просто taskkill /f /im ping не катит, т.к. он начинает убивать не те пинги. Нужно убить именно тот, который был запущен строчкой ранее.

Всего записей: 109 | Зарегистр. 03-08-2007 | Отправлено: 20:54 09-09-2007 | Исправлено: Rotorina, 21:29 09-09-2007
Elroir



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Я вернулся
 
Rotorina
Попробуй так:

Код:
 
@echo off
setlocal enabledelayedexpansion
for /f "tokens=1,2" %%a in ('tasklist ^| find /i "ping"') do (
set "pings_pid_list=!pings_pid_list! %%b")
 
start /b ping -n 30 www.google.com
 
for /f "tokens=1,2" %%a in ('tasklist ^| find /i "ping"') do (
echo %pings_pid_list% | find "%%b">nul
if not !errorlevel!==0 (
taskkill /F /PID %%b>nul))
 


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

Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 22:45 09-09-2007
utka00



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

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



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
utka00
Число отделено пробелами или как-то еще?
А то, например, ищем число 234, а найдем 12345.

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

Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 23:09 09-09-2007
utka00



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Elroir
перед ним пробел, дальше новая строка, и еще желатьельно чтоб можно было задавать диапазон для первой цифры (мне надо от 1 до 4)

Всего записей: 95 | Зарегистр. 01-05-2007 | Отправлено: 23:20 09-09-2007
Elroir



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
utka00
Насчет диапазона первой цифры не понял. При запуске батника дать первую цифру "случайных" чисел? Сколько цифр должно быть в этом случайном числе?

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

Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 23:27 09-09-2007
utka00



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Elroir
число должно быть семизначным а первая цифра в нем от 1 до 4

Всего записей: 95 | Зарегистр. 01-05-2007 | Отправлено: 23:34 09-09-2007
Rotorina



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

Всего записей: 109 | Зарегистр. 03-08-2007 | Отправлено: 00:49 10-09-2007
sv9205



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

Цитата:
 http://forum.ru-board.com/topic.cgi?forum=5&topic=22080&start=640#10
Как возможно завернуть автоматом все сразу, WinRAR архивы второй раз?(по два архива в один независимо).
Спрашиваю, для того, чтобы релиз который идёт в папке по 50 мб завернуть по два оригинальных архива в один независимо  
и при удалении с обменника, человек сможет докачать оригинальные с другого места.

Всего записей: 19697 | Зарегистр. 17-08-2004 | Отправлено: 01:30 10-09-2007
Elroir



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

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


Код:
 
@echo off
call :sbs_create
setlocal enabledelayedexpansion
:: main section
del /q /f temp1.txt 2>nul
copy "%~1" temp1.txt>nul
:again
type temp1.txt | find " %2">nul
if %errorlevel%==0 (
call :random7
sbs2.com 1 " %2" " !rnum!" < temp1.txt > temp2.txt
del /q /f temp1.txt
ren temp2.txt temp1.txt
goto :again)
:: Delete the SBS2.COM program  
del /q sbs2.com
 
ren "%~1" "%~1.bak"
ren temp1.txt "%~1"
 
goto :EOF
::end of main section
 
:random7
set "rest="
set /a "fdigit=(!random! %% 4) + 1"
for /l %%a in (1,1,6) do (
set "num=!random:~-1!"
set "rest=!rest!!num!")
set "rnum=!fdigit!!rest!"
goto :EOF
:sbs_create
echo Bj@jzh`0X-`/PPPPPPa(DE(DM(DO(Dh(Ls(Lu(LX(LeZRR]EEEUYRX2Dx=>"sbs2.com"
echo 0DxFP,0Xx.t0P,=XtGsB4o@$?PIyU!WvX0GwUY Wv;ovBX2Gv0ExGIuht6>>"sbs2.com"
echo ?@}IKuNWpe~Fpe?FNHlF?wGMECIQqo{Ox{T?kPv@jeoSeIlRFD@{AyEKj@>>"sbs2.com"
echo iqe~1NeAyR?mHAG~BGRgB{~H?o~TsdgCYqe?HR~upkpBG?~slJBCyA?@xA>>"sbs2.com"
echo LZp{xq`Cs?H[C_vHDyB?Hos@QslFA@wQ~~x}viH}`LYNBGyA?@xAB?sUq`>>"sbs2.com"
echo LRy@PwtCYQEuFK@A~BxPtDss@fFqjVmzD@qBEOEenU?`eHHeBCMs?FExep>>"sbs2.com"
echo LHsPBGyA?@xAunjzA}EKNs@CA?wQpQpKLBHv?s`WJ`LRCYyIWMJaejCksl>>"sbs2.com"
echo H[GyFGhHBwHZjjHeoFasuFUJeHeB?OsQH[xeHCPvqFj@oq@eNc?~}Nu??O>>"sbs2.com"
echo ~oEwoAjBKs?Zp`LBzHQzyEFrAWAG{EFrAqAGYwHTECIQ{coKIsaCsf{Oe~>>"sbs2.com"
echo CK}Ayre~CNFA{rAyEKFACrA{EKGAjbA}eKGSjNMtQFtc{OAyDGFj?{FDGQ>>"sbs2.com"
echo KAjNVk_OCAx@e?f{o?CosI}1EGizhljJ~H1ZeG}JBA~rACBMDGjjDG@g0>>"sbs2.com"
 

Батнику передаются 2 аргумента - имя файла (первый) и число (второй).

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

Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 01:54 10-09-2007
utka00



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

Всего записей: 95 | Зарегистр. 01-05-2007 | Отправлено: 16:34 10-09-2007
Evgeniy15

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите пожалуйста!
 
Необходимо переименовать папки, которые начинаются с цифры. "." заменить на "-", если в расширении меньше двух знаков, то добавить первым "0"
 
Заранее благодарен

Всего записей: 46 | Зарегистр. 11-02-2007 | Отправлено: 22:48 10-09-2007
Elroir



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

Код:
 
@echo off
setlocal enabledelayedexpansion
for /d %%a in (*.*) do (
set "dir_name=%%~na"
set "dir_ext=%%~xa"
for %%b in (1 2 3 4 5 6 7 8 9 0) do if "!dir_name:~0,1!"=="%%b" set "doit=yes"
if defined doit (
set "dir_name=!dir_name:.=-!"
if "!dir_ext:~2,1!"=="" set "dir_ext=.0!dir_ext:~1!"
ren "%%a" "!dir_name!!dir_ext!"
set "doit="))
 


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

Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 23:06 10-09-2007
Evgeniy15

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Скопировал как есть в бат файл и запустил. Ничего не произошло.
Что я делаю не так?

Всего записей: 46 | Зарегистр. 11-02-2007 | Отправлено: 23:19 10-09-2007
Elroir



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Evgeniy15
Батник запускал там, где находятся директории, которые надо переименовать?

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

Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 23:23 10-09-2007
Evgeniy15

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

Всего записей: 46 | Зарегистр. 11-02-2007 | Отправлено: 23:28 10-09-2007
Elroir



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Evgeniy15
Приведи пример названия директории, которую нужно переименовать.
Какая версия Windows?

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

Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 23:35 10-09-2007
Evgeniy15

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Прошу прощения! Произошло!  
Расширения поменялись. точка не поменялась на "-"  вот я и не заметил.
Если можно прокоментировать что делает каждая строка.
Большое спасибо!

Всего записей: 46 | Зарегистр. 11-02-2007 | Отправлено: 23:38 10-09-2007
Elroir



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Evgeniy15
Вообще-то, единственная точка, которая должна оставаться в названии файла - это точка отделяющая расширение...

Код:
 
@echo off  
:: Включаем расширения переменной среды с задержкой
setlocal enabledelayedexpansion  
:: Для каждой поддиректории в текущей директории  
for /d %%a in (*.*) do (  
:: Определяем переменную dir_name, в которую записываем имя директории  
set "dir_name=%%~na"  
:: Определяем переменную dir_ext, в которую записываем расширение директории  
set "dir_ext=%%~xa"  
:: Для каждой из цифр в скобках проверяем -
:: если первый символ в имени директории равен этой цифре -  
:: определяем переменную doit.
for %%b in (1 2 3 4 5 6 7 8 9 0) do if "!dir_name:~0,1!"=="%%b" set "doit=yes"  
:: Если переменная doit определена -
if defined doit (
:: Заменяем все точки в имени директории на "-"
set "dir_name=!dir_name:.=-!"

:: Если в расширении меньше 2-х символов - подставляем перед ним "0"
if "!dir_ext:~2,1!"=="" set "dir_ext=.0!dir_ext:~1!"  
:: Переименовываем директориию
ren "%%a" "!dir_name!!dir_ext!"
:: Уничтожаем переменную doit
set "doit="))  
 
 


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

Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 23:56 10-09-2007 | Исправлено: Elroir, 23:59 10-09-2007
   

Страницы: 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 109 110 111 112 113 114 115 116 117 118

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


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru