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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
bomzzz



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

Цитата:
 
ECHO OFF
COLOR 9F
CLS
set j=kupilamamakonikaakonikbeznogi
for /r c:\de %%i IN (de.ini) do set j=%%i%
set j=%j:~18,2%  
echo %j%
pause
 

 
Quick Batch File Compiler - Позволяет превратить ваш батник в независимое приложение  
http://files.myopera.com/Creat0R/files/Quick_Batch_File_Compiler_2.xx.zip
у него есть свои преимщества, когда речь идет о распаковке вложенных файлов в темп,  
но Bat_To_Exe_Converter гораздо лучше  
HomePage
Download
Freeware
тута еще есть такая утилита как аудио видео ту екзе
 
есть еще такая утилита для конвертации. она древняя и половину команд не понимает. но зато исполняемые модули очень маленькие
 
Utility Downloads
How to make a bat executable
Download bat2exe.com
 
да и сама она весит 6,12 КБ (6 272 байт)

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 15:31 14-09-2009 | Исправлено: bomzzz, 16:22 14-09-2009
mnh

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
спс за ответ, но у меня всё равно вопрос остался, скажите как бат файлом найти файл и добавить строку, причём в строку нужно прописать часть пути к ниму
например файл лежит в папке E:\Temp\de.txt в de.txt  нужно добавить строку (в определённое место например за строкой уууууу)  
D:\Data\DE\BASE\bo\etplEMP\ - где EMP взял из пути E:\Temp\de.txt

Всего записей: 5 | Зарегистр. 14-09-2009 | Отправлено: 17:59 14-09-2009
bomzzz



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
for /r c:\de %%i IN (de.ini) do set j=%%i%  
set j=%j:~18,2%  
найти файл в папке включая поиск в подкаталогах и взять часть пути вот так.  
чтоб записать строку после некоторой строки файл надо полностью переписать в новый вставив нужную строку в нужное место потом старый стереть а новый переименовать в старое имя.
наконецто понял что требуется - отказаться от екзешника
 
Добавлено:
вот сколько вожусь с етими батниками все понять не могу принцип где сколько знаков % должно быть.

Цитата:
 
ECHO OFF
COLOR 9F
CLS
 
FOR /F %%I IN (MyFile.txt) Do (
ECHO %%I >> MyFile1.txt
IF %%I%==MYSTRING ECHO ADDSTRING>> MyFile1.txt)
 
DEL /Q MyFile.TXT
REN MyFile1.TXT MyFile.TXT
PAUSE
 

этот батник добавляет в фале MyFile.txt после КАЖДОЙ строки MYSTRING строку ADDSTRING

Цитата:
 
111111111    >    111111111
222222222    >    222222222
MYSTRING    >    MYSTRING
333333333    >    ADDSTRING
                          333333333
 

тут осталось превратить MYSTRING и ADDSTRING в переменные и присвоить им значения, имя файла с путем к нему
FOR /R c:\de %%I IN (de.ini) DO SET PATH=%%I%  

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 18:10 14-09-2009 | Исправлено: bomzzz, 19:47 14-09-2009
Smokeer

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

Цитата:
Нужно проверять файлы по размеру или в любом случае отправлять их *.bac?

если есть одноименный файл - переименовать в .bac  
Вообще я понял... это делается через FOR + IF EXIST...
 
почему-то сначала спрашиваешь а потом через день-два самому приходит в голову как делать... странно.

Всего записей: 781 | Зарегистр. 25-09-2005 | Отправлено: 19:54 14-09-2009
bomzzz



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

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 19:56 14-09-2009 | Исправлено: bomzzz, 20:02 14-09-2009
01MDM



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

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 20:15 14-09-2009
Artem_Butenko



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ребята, пожалуйста, помогите реализовать следующие задачи: 1) Перемещение группы файлов по маске каждого в отдельную папку именуемую от 1 и до ... (2, 3, 4, 5, 6, 7, 8, 9, 10 и т.д.). 2) Задача сходна с первой, только файлы необходимо переместить каждый в отдельную папку с именем перемещаемого файла. Буду Вам очень признателен за помощь.

Всего записей: 711 | Зарегистр. 19-02-2008 | Отправлено: 21:46 14-09-2009
Kiev78

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
1. Не понятно, что за маска? Каков конкретно порядок перемещения?
2.  

Цитата:
FOR /r C:\test_folder\ %%a IN (*.*) DO (
md %%~na
move %%a %%~dpa%%~na\%%~nxa
)

Всего записей: 244 | Зарегистр. 17-06-2006 | Отправлено: 23:11 14-09-2009
01MDM



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

Код:
 
@echo off
for %%i in (*.txt) do call:move "%%i"
goto:eof
 
:move
set /a folder+=1
md folder
move %1 folder
 


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



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спасибо Вам ребята (01MDM, Kiev78) за помощь. Буду разбираться дальше. Под маской имелось ввиду расширение файла. Куда перемещать файлы? В корневой каталог, в котором они и находятся, но каждый в отдельную папку, в первом случае имена папок должны нумероваться, а во втором, - получать имя перемещаемого файла. Теперь думаю с вопросом исправился, прошу меня извинить.

Всего записей: 711 | Зарегистр. 19-02-2008 | Отправлено: 01:17 15-09-2009
bomzzz



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
новую утилиту родил - суперкомпакт. проверяет наличие в буфере обмена текстовой информации, и копирует её в файл рядом с собой с именем Clbd.txt. проверил 100 мб она точно копирует причем быстро - наверно даже быстрее батника. предел скорее всего определяется железом компьютера. если текстовой информации в буфере не содержится создается пустой файл - думаю это корректно для взаимодействия разных исполняемых модулей.
ClipBoard.exe 2,00 КБ (2 048 байт)
можно было бы конечно сделать, чтоб ей командной строкой имя файла заказывалось, но думаю это излишние навороты.  
прежней такой же которая 10 кб весит, пользовался в батниках ни раз - в основном для передачи ссылок или ссылки http. это реально полезная вещь.    
 
так как она вызывается из батника командой call то управление возвращается в батник когда файлик уже создан и закрыт. то есть все ништяк работает. проверено. ну там чтобы передавать на закачку списки ссылок и такое прочее... обратная утилита "В буфер обмена" ни разу реально не пригодилась. также в СДопен смысл есть - тут же ткнул и за диском потянулся, а в СДклоуз нету - диск засунул и тут же ткнул в кнопку.

Цитата:
 
ClipBoard.exe 2,00 КБ (2 048 байт)
MsgBox.exe2,00 КБ (2 048 байт)
MsgBox-.exe2,00 КБ (2 048 байт)
sound.exe1,50 КБ (1 536 байт)
cdclose.exe 2,50 КБ (2 560 байт)
cdopen.exe 2,50 КБ (2 560 байт)
 

вот еще две утилиты есть Reboot и ShutDown - они без интерфейса, то есть ничего не спрашивают. но таких наверно хватает.
Reboot.exe 10,2 КБ (10 454 байт)
ShutDown.exe 10,2 КБ (10 454 байт)
 
похоже разделителем значений надо было сделать " .  
   
 
новую слепил разделитель команд " а разделитель строки ` (буква ё в английской раскладке), оба эти знака можно легко заменить на почти такие же, кавычек аж три набора, и апострофов тоже.  
MsgBox-.exe2,00 КБ (2 048 байт)
   
надеюсь больше сурпризов не будет.
текст в окошко передан батником

Цитата:
 
ECHO OFF
COLOR 9F
CLS
FOR /F "delims=µ" %%I IN (MSG.TXT) DO SET MSG=%%I
call MsgBoxU.exe %MSG%
pause
 

текст примерно такой: "sample'sample"sample"32
общая длина строки 1024 символа - 1 кб

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 07:03 15-09-2009 | Исправлено: bomzzz, 12:13 15-09-2009
mnh

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

Цитата:
найти файл в папке включая поиск в подкаталогах и взять часть пути вот так.  
чтоб записать строку после некоторой строки файл надо полностью переписать в новый вставив нужную строку в нужное место потом старый стереть а новый переименовать в старое имя.  
наконецто понял что требуется - отказаться от екзешника

 
Спасибо огромное за внимание!

Всего записей: 5 | Зарегистр. 14-09-2009 | Отправлено: 13:34 15-09-2009
Angel3Ds

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите плз, как из командной строки, изменить аудиоустройство, используемое по умолчанию. Нашел только это, rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,2 , а как дальше, выбрать устройство и нажать ок, не знаю =))
 
WinXP

Всего записей: 2 | Зарегистр. 15-09-2009 | Отправлено: 15:49 15-09-2009
bomzzz



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
надо снимок с системы сделать изменить устрноство и сделать снова снимок и найти разницу - скорее всего это в реестре. или набрать в гугле что то типа реестр аудиоустройство. если не повезет по английски
HKEY_CURRENT_USER\Software\Microsoft\Multimedia\Sound Mapper
проверять надо
у мнуу он вот так выглядит. очень похоже на правду.

Цитата:
 
REGEDIT4
 
[HKEY_CURRENT_USER\Software\Microsoft\Multimedia\Sound Mapper]
"Playback"="SB Live! Audio [DF80]"
"PreferredOnly"=dword:00000000
"SetupPreferredAudioDevicesCount"=dword:00000000
"Record"="SB Live! Audio [DF80]"
 

 
если это ВСЁ что тебе надо - файлик реестра создай да и все.
вот интересно тут пять настроек а значений у меня всего четыре - кажется я нашел почему у меня после восстановления системы из образа через некоторое время midi пердеть , извините, начинает. все засечь не могу из за какой проги или чего то еще.
 
ну вот я поменял на модемный вход в настройках винды и реестр стал. ОНО!

Цитата:
 
REGEDIT4
 
[HKEY_CURRENT_USER\Software\Microsoft\Multimedia\Sound Mapper]
"Playback"="Модем №0, линейный выход"
"PreferredOnly"=dword:00000000
"SetupPreferredAudioDevicesCount"=dword:00000000
"Record"="SB Live! Audio [DF80]"
 

УРА! починилось миди  

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 16:44 15-09-2009 | Исправлено: bomzzz, 17:22 15-09-2009
Qarma

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте, не поможете решить небольшую задачу:  
Необходимо удалить файлы, не после следующего алгоритма:
for /R %%i in (*.ogg) do dec.exe "%%i", а в процессе его выполнения. Объясню подробнее - после преобразования файла *.ogg - нужно удалить конкретный файл (*.ogg), который уже конвертировался в *.wav.

Всего записей: 288 | Зарегистр. 18-02-2009 | Отправлено: 18:17 15-09-2009 | Исправлено: Qarma, 18:27 15-09-2009
Angel3Ds

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
bomzzz Спасибо, то что нужно =) Тогда из камандной строки, у меня это так:
REG ADD "HKEY_CURRENT_USER\Software\Microsoft\Multimedia\Sound Mapper" /v "Playback" /t "REG_SZ" /d "SoundMAX HD Audio" /f
 

Всего записей: 2 | Зарегистр. 15-09-2009 | Отправлено: 18:27 15-09-2009
bomzzz



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
и тебе спасибо - я еще реестр не редактировал из батника. только на вбс скрипе делал. может все таки проще фаликом реестра ето делать?
 
может в этой теме мне помогут. думаю не только мне знакомо - насколько обломно лазить в свойства папки, да еще два раза, чтоб изменить расширение у какого либо файла. я чаще пользовался для этого тотал командером, как "вторым експлорером", но тоже его запускать и открывать нужную папку не быстро. сделал на вбс скрипте изменялку для реестра, ну на чем cделано не принчипиально. вот после изменений нужно експлорер ОБНОВИТЬ. из вбс скрипта его удалось  только перегрузить полностью - но при етом исчезает весь рабочий стол, и происходит это в течение нескольких секунд, к тому же многие программы такое событие переживают не корректно и в системном трее могут не появится после обновления. обновить F5 оказалось вовсе не тоже самое обновить, когда тыкаешь в поле папки или рабочий стол и в контекстном меню выбираешь обновить. причем даже если это делать через контекстное меню обновляется только одна папка, а не все. а когда разрешаешь расширения для файлов обновляются все окна експлорера. перерыл пол инета не смог найти ни следа, ни про эту разницу, ничего толкового про експлорер. никто не знает как обновить это дело автоматичtски. пока более или менее толковое батник которые отрезает расширения у всех файлов в одной с собой директории. но иногда надо расширение не удалить а посматреть. вот как бы обновить експлорер в этом случае.

Цитата:
 
ECHO OFF                                :  отключаем вывод служебной инфы
COLOR 9F                                : делаем екранчик синим, а бухавки белыми из соображений красоты
CLS                                         : очищаем екранчик
SET MYNAME=%0                     : присваеваем переменной MYNAME имя нашего батника
ECHO > %MYNAME:~0,-4%       : создаем рядом с нашим батником файл с таким же именем но без расширения .bat
REN *.* *.""                             : удаляем у всех файлов в директории расширения переименованием
                                               : наш батник не может переименовать себя потому что тут же уже сучествует файл
DEL %MYNAME:~0,-4%             : с его именем без расширения. удаляем файл-заглушку. хатова.
 

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 18:44 15-09-2009 | Исправлено: bomzzz, 20:14 15-09-2009
Cokolok

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Люди... у миня на уроке информатики Учитель задолбал умничать на дурацкие темы !!!
Помогите плиз.... скажите пару приёмчиков чтобы поприкалываться с его компа... (написать маленькую прогу, вести в Командной Строке Что либо..... запоминающее)
чтото такое неубийственное... чтобы поарать.... а если пропасут что я както исправить =)))

Всего записей: 27 | Зарегистр. 24-05-2009 | Отправлено: 19:26 15-09-2009
Kiev78

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

Цитата:
Здравствуйте, не поможете решить небольшую задачу:  
Необходимо удалить файлы, не после следующего алгоритма:
for /R %%i in (*.ogg) do dec.exe "%%i", а в процессе его выполнения. Объясню подробнее - после преобразования файла *.ogg - нужно удалить конкретный файл (*.ogg), который уже конвертировался в *.wav.  

Тогда просто:

Код:
for /R %%i in (*.ogg) do (
dec.exe "%%i"
del "%%i"
)

можно также побаловаться с ключами команды del:

Код:
 
  /P          Запрос на подтверждение перед удалением каждого файла.
  /F          Принудительное удаление файлов, доступных только для чтения.
  /S          Удаление указанных файлов из всех подкаталогов.
  /Q          Отключение запроса на подтверждение при удалении файлов.
  /A          Отбор файлов для удаления по атрибутам.
  атрибуты    S  Системные файлы       R  Доступные только для чтения
              H  Скрытые файлы         A  Файлы для архивирования
              Префикс "-" имеет значение НЕ
 
Изменение команд DEL и ERASE при включении расширенной обработки команд:
 
Результаты вывода для ключа /S принимают обратный характер, то есть выводятся
только имена удаленных файлов, а не файлов, которые не удалось найти.

Всего записей: 244 | Зарегистр. 17-06-2006 | Отправлено: 19:29 15-09-2009
bomzzz



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
вчера меседжбокс испытал, сегодня буфер обмена испытывал. 170 мб в буфер обмена просто не скопировалось. видимо потолок 100 мб или 102.4 скорее всего. это не так просто определить - файл 170 мб открывался несколько минут. до 100 мб копируется легко и текстовые файлы такого размера открываются сравнительно быстро. создал файл 81.5 мб, открыл его скопировал содержимое. запустил свою утилиту - и сравнил хеш сумму ASH используя µTorrent - она полностью совпала.

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 05:39 16-09-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.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru