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

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



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть файл 1.tmp, в нём одна строка:
default=multi(0)disk(0)rdisk(1)partition(1)\WINDOWS
 
Нужно Удалить из файла (default=), и добавить в конец строки
="ЏаЁ®ЎбЄ п ѓ®а®¤бЄ п Ў®«м-Ёж " /optin /Kernel=352.exe
Так что-бы получилась одна строка в файле.
 
Файл 1.tmp находится всегда в корне диска, вся сложность  
заключается вот в чём, что он может быть на другом диске.
 
Код:
 
 
FOR %%i IN (C D E F G H K Q W R T Y U I O P S J L Z X V B N M) DO (IF EXIST "%%i:\1.tmp" call:YES %%i)
:YES
for /f "tokens=*" %%a in ('more^<"%1:\1.tmp"') do set /p=%%a<nul>"%1:\2.tmp"
echo ="ЏаЁ®ЎбЄ п ѓ®а®¤бЄ п Ў®«м-Ёж " /noexecute=optin /Kernel=352.exe >>"%1:\2.tmp"
 
for /f "tokens=*" %%a in ('more^<"%1:\2.tmp"') do call :_replace %%a
goto eof
:_replace
Cset i=%*
echo %i%
set i=%i:default=%
if "%i:~0,1%"=="=" SET i=%i:~1%
echo %i%>"C:\3.tmp"
 
goto eof
EXIT

 
 
Этот код редактирует файл 1.tmp на диске C:
Но у меня ни как не получается отредактировать его,  
если он на диске D:

Всего записей: 230 | Зарегистр. 22-04-2009 | Отправлено: 01:02 02-05-2009 | Исправлено: Cosmogor, 01:16 02-05-2009
timka85

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

Цитата:
Или положи батник в нужную папку и исправь `for %%i in (*.lnk) do...`

отлично! теперь запуск указанного в списке ярлыка работает на УРА! Благодарю Вас за это. А теперь осталось только написать следующую команду, описанную в пункте "2" - Пропал и завис. С третьим пунктом я уже как-нибудь сам. Еще раз Вам спасибо за столь ценный код. Браво!

Всего записей: 236 | Зарегистр. 19-07-2008 | Отправлено: 03:41 02-05-2009
basstard

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cosmogor
 
Нужно Удалить из файла (default=), и добавить в конец строки  
="ЏаЁ®ЎбЄ п ѓ®а®¤бЄ п Ў®«м-Ёж " /optin /Kernel=352.exe  
Так что-бы получилась одна строка в файле.

 
Попробуй так:
(протестировать его не могу, так что расскажешь, что он делает)

Код:
 
@echo off
setlocal enabledelayedexpansion
for %%i in (c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z) do (
    if exist %%i:\1.tmp (
        set filename=%%i:\1.tmp
        set stopstring=not_exist
        for /f "tokens=1 delims= " %%j in (!filename!) do (
            if not !stopstring!==stop (
                set firststring=%%j
                set editstring=!firststring:~0,8!="ЏаЁ®ЎбЄ п ѓ®а®¤бЄ п Ў®«м-Ёж " /optin /Kernel=352.exe
                echo !editstring!>!filename!
                set stopstring=stop
            )
        )
    )
)
pause

Всего записей: 58 | Зарегистр. 05-08-2008 | Отправлено: 11:03 02-05-2009 | Исправлено: basstard, 11:18 02-05-2009
01MDM



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

Цитата:
А теперь осталось только написать следующую команду, описанную в пункте "2" - Пропал и завис.

 

Цитата:
Как Вы уже поняли, чтобы первый батник Общего действия не продолжил свою рабуту преждевременно.

 
Он и так будет работать и ждать завершения Commander.exe. Спрятать его можно, но потом придется завершать вручную, т.к второй батник не будет ждать завершения приложения, запущенного им с ярлыка (start /wait здесь не работает)
 
Добавь во второй батник:

Код:
 
nircmdc win hide ititle "Постоянные символы заголовока окна Коммандера"  
 


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

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

Цитата:
т.к второй батник не будет ждать завершения приложения, запущенного им с ярлыка

в том-то и оно! Первый (Общий) батник действительно должен дожидаться завершения процесса Commander.exe, а второй (Искомый) должен позаботиться, чтобы он правильно завершился. И именно поэтому мне необходимо не убить его, а только скрыть с глаз долой до момента его ненадобности. А уж потом, когда я закрою Приложение, завершится и сам процесс Commander.exe, и, соответственно, Общий батник продолжит свою работу.
  Я начинаю побаиваться, читая мануалы, что так просто манипулировать Видимостью уже запущенным процессом через БАТ - не выйдет. Хотя  может это только мои страхи...
 Спасибо Вам за поддержку. Жду дальнейшего решения.

Всего записей: 236 | Зарегистр. 19-07-2008 | Отправлено: 12:29 02-05-2009
Cosmogor



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
basstard
 
Нет, батник не сработал.
Вот как файл он отредактировал:
default=="ЏаЁ®ЎбЄ п ѓ®а®¤бЄ п Ў®«м-Ёж " /optin /Kernel=352.exe
 
А нужно чтоб получилось вот так:
multi(0)disk(0)rdisk(1)partition(1)\WINDOWS="ЏаЁ®ЎбЄ п ѓ®а®¤бЄ п Ў®«м-Ёж " /optin /Kernel=352.exe
 
Зато он этот файл на любом диске находит!
 
Спс.
 
Добавлено:
basstard
 
Нет, батник не сработал.
Вот как файл он отредактировал:
default=="ЏаЁ®ЎбЄ п ѓ®а®¤бЄ п Ў®«м-Ёж " /optin /Kernel=352.exe
 
А нужно чтоб получилось вот так:
multi(0)disk(0)rdisk(1)partition(1)\WINDOWS="ЏаЁ®ЎбЄ п ѓ®а®¤бЄ п Ў®«м-Ёж " /optin /Kernel=352.exe
 
Зато он этот файл на любом диске находит!
 
Спс.
 
Добавлено:
basstard
 
Вот подправил твой батник.
 
Было:
!firststring:~0,8!
 
Стало:
!firststring:~8!
 
Сейчас всё работает путём!!
 
Спс.  

Всего записей: 230 | Зарегистр. 22-04-2009 | Отправлено: 16:58 02-05-2009
timka85

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
01MDM
ну хорошо тогда такой вопрос. Как будет выглядеть отдельная команда в БАТ-файле для преобразования вида запущенного процесса в Невидимый вид?

Всего записей: 236 | Зарегистр. 19-07-2008 | Отправлено: 17:51 02-05-2009
LikvidatorMax

Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Помогите решить проблему.
Есть папка, в которой лежат книги. Они начали занимать слишком много места. Я хочу их все заархивировать в zip каждый файл в отдельный архив (чтобы было удобнее).
Не хочется делать вручную

Всего записей: 36 | Зарегистр. 05-01-2009 | Отправлено: 19:18 02-05-2009
01MDM



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

Цитата:
Как будет выглядеть отдельная команда в БАТ-файле для преобразования вида запущенного процесса в Невидимый вид?
 

Я же написал, с помощью утилиты nircmd. Штатными способами может быть на vbs, но это "другая песня".

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 19:41 02-05-2009
Cosmogor



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вот силами форума создал наконец батничек.
Вот Ссылка на файл
он упакован в самораспаковывающийся архив
При желании все файлы можно извлечь (чтоб посмотреть код)
Суть файла такова:
 
Устанавливается начальная загрузочная заставка
Boot Screen, на замену Windows-кой, есть возможность
восстановить всё как было до установки Boot Screen.
В системе ни чего не удаляется! Просто редактируется  
файл boot.ini, и делается запись в реестре.
 
Мне он потребовался для одного дела, работает без
изьянов (у меня работает хорошо, в оси Windows XP SP2)
Может кому и понадобится он.

Всего записей: 230 | Зарегистр. 22-04-2009 | Отправлено: 20:44 02-05-2009
XXXXL



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте!
Я тут когда-то давно встречал код, который переводил текст с кириллицы в транслит,  написанный Elroir`ом, он даже в шапке был, теперь понадобился а найти не могу...
 
Может у кого он есть?
 
Второе: Как можно заменить все пробелы в текстовом документе на символ "=" ?
 
Треье: Реально заставить gsar изменять кириллические словами?
 

Код:
@echo off    
setlocal    
set "toChange=12345"    
set /p changeTo=<1.txt  
gsar -s%toChange% -r%changeTo% -o test.txt
 
В файле 1.txt слово написано кириллическим шрифтом.

 
Спасибо!

Всего записей: 286 | Зарегистр. 16-05-2007 | Отправлено: 20:52 02-05-2009 | Исправлено: XXXXL, 21:09 02-05-2009
basstard

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LikvidatorMax
 
каждый файл в отдельный архив
 
я себе такое для rar'ов делал.
по ссылке найдешь скрипт archive.cmd и консольную версию rar.exe
скрипт и архиватор должны лежать в одной папке.
выдели любое количество файлов и/или папок и перетащи их на иконку archive.cmd
скрипт создаст на рабочем столе папку с именем archive_<текущая дата>_<случайное число>
и в нее заархивирует все указанные файлы/папки. каждое вхождение в отдельный архив.
для каждого нового задания будет создаваться новая папка с датой,
чтобы легче ориентироваться и случайным числом, чтобы гарантированно избежать повторений.

Всего записей: 58 | Зарегистр. 05-08-2008 | Отправлено: 21:51 02-05-2009
01MDM



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

Цитата:
Второе: Как можно заменить все пробелы в текстовом документе на символ "=" ?

Знаю, sed у тебя есть:

Код:
 
sed "s/ /=/g" 1.txt | more 1>1.tmp && move 1.tmp 1.txt
 
:: Если твой sed нормально возвращает перенос строки (в win формате) то:
 
sed -i "s/ /=/g" 1.txt
 


Цитата:
Треье: Реально заставить gsar изменять кириллические словами?  

У меня нормально обрабатывает. Если исходный файл в win-1251, то добавь в батник `chcp 1251 1>nul`
 

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



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

----------
Per warez ad scientiam

Всего записей: 11717 | Зарегистр. 16-05-2003 | Отправлено: 09:34 03-05-2009
timka85

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Astra55
Привет! По-моему о команде Start в Справочнике по параметрам командной строки все описано на эту тему и /max там есть.

Всего записей: 236 | Зарегистр. 19-07-2008 | Отправлено: 10:26 03-05-2009
XXXXL



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
01MDM, спасибо огромное, всё работает.
Осталось только:

Цитата:
Я тут когда-то давно встречал код, который переводил текст с кириллицы в транслит,  написанный Elroir`ом, он даже в шапке был, теперь понадобился а найти не могу...  
Может у кого он есть?

 

Всего записей: 286 | Зарегистр. 16-05-2007 | Отправлено: 10:52 03-05-2009
timka85

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
XXXXL
http://forum.ru-board.com/topic.cgi?forum=62&topic=9040&start=733&limit=1
 
Добавлено:
а вот та шапка, носи на здоровье
http://forum.ru-board.com/topic.cgi?forum=62&topic=13556&start=0&limit=1&m=4

Всего записей: 236 | Зарегистр. 19-07-2008 | Отправлено: 11:15 03-05-2009
XXXXL



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

Цитата:
а вот та шапка, носи на здоровье

Спасибо!
 

Цитата:
У меня нормально обрабатывает. Если исходный файл в win-1251, то добавь в батник `chcp 1251 1>nul`

01MDM, у меня оказался исходный файл в UTF-8, вгет переводит кучу символо, это как-то лечится?

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



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

Код:
 
@echo off
chcp 1251 1>nul
 
sed -e "s/а/a/g"     -e "s/А/A/g"     ^
      -e "s/б/b/g"     -e "s/Б/B/g"     ^
      -e "s/в/v/g"     -e "s/В/V/g"     ^
      -e "s/г/g/g"      -e "s/Г/G/g"     ^
      -e "s/д/d/g"     -e "s/Д/D/g"     ^
      -e "s/е/e/g"     -e "s/Е/E/g"     ^
      -e "s/ё/jo/g"    -e "s/Ё/JO/g"    ^
      -e "s/ж/zh/g"   -e "s/Ж/ZH/g"    ^
      -e "s/з/z/g"     -e "s/З/Z/g"     ^
      -e "s/и/i/g"     -e "s/И/I/g"     ^
      -e "s/й/jj/g"    -e "s/Й/JJ/g"    ^
      -e "s/к/k/g"     -e "s/К/K/g"     ^
      -e "s/л/l/g"     -e "s/Л/L/g"     ^
      -e "s/м/m/g"    -e "s/М/M/g"     ^
      -e "s/н/n/g"     -e "s/Н/N/g"     ^
      -e "s/о/o/g"     -e "s/О/O/g"     ^
      -e "s/п/p/g"     -e "s/П/P/g"     ^
      -e "s/р/r/g"     -e "s/Р/R/g"     ^
      -e "s/с/s/g"     -e "s/С/S/g"     ^
      -e "s/т/t/g"      -e "s/Т/T/g"     ^
      -e "s/у/u/g"     -e "s/У/U/g"     ^
      -e "s/ф/f/g"     -e "s/Ф/F/g"     ^
      -e "s/х/kh/g"   -e "s/Х/KH/g"    ^
      -e "s/ц/c/g"     -e "s/Ц/C/g"     ^
      -e "s/ч/shh/g"  -e "s/Ч/SHH/g"   ^
      -e "s/ш/sh/g"   -e "s/Ш/SH/g"    ^
      -e "s/щ/sca/g" -e "s/Щ/SCA/g"   ^
      -e "s/ь/'/g"      -e "s/Ь/'/g"     ^
      -e "s/ъ/"""/g"   -e "s/Ъ/"""/g"   ^
      -e "s/э/eh/g"    -e "s/Э/EH/g"    ^
      -e "s/ы/y/g"     -e "s/Ы/Y/g"     ^
      -e "s/ю/ju/g"    -e "s/Ю/JU/g"    ^
      -e "s/я/ja/g"    -e "s/Я/JA/g" %1 | more 1>"%~n1-trans%~x1"  
 

Вызываешь файл, который надо транслитерировать:

Код:
 
C:\> trans.cmd "1.txt"
 

Получаешь 1-trans.txt. Возможны какие-то неточности в переводе. Сам подкоректируй.
 

Цитата:
у меня оказался исходный файл в UTF-8, вгет переводит кучу символо, это как-то лечится?

 
Попробуй cmd запустить с ключом /u (юникод)  

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 12:40 03-05-2009 | Исправлено: 01MDM, 12:48 03-05-2009
XXXXL



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

Цитата:
батник для транслита

Он то мне и нужен был, спасибо!
 
 

Цитата:
Попробуй cmd запустить с ключом /u (юникод)  

 
Запустил cmd /u, в консоли написал:
setlocal    
set "toChange=12345"    
set /p changeTo=<1.txt  
gsar -s%toChange% -r%changeTo% -o test.txt
 
Результат - куча символов в test.txt

Всего записей: 286 | Зарегистр. 16-05-2007 | Отправлено: 13:48 03-05-2009 | Исправлено: XXXXL, 13:53 03-05-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