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

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



Tracker Mod
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
igor_andreev
Спасибо, работает отлично, но правда при кол-ве строк > 300 - довольно медленно.
 
Rush
По-моему не совсем верно работает. Ищет первое различие и пишет на выход все совпадения до первого различия, остальное вырезает вообще. Вот, например..

Всего записей: 1364 | Зарегистр. 14-01-2007 | Отправлено: 16:39 07-04-2008
Rush

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

Так ведь я просто сделал сравнение строк один в один, а не рекурсивно. Они ведь у тебя не совпадают дальше 6 строки. Я так и думал, что тебе на полное соответствие надо.
Тебе расположение неважно, лишь бы одинаковые по содержанию были?

Всего записей: 3551 | Зарегистр. 20-11-2003 | Отправлено: 17:10 07-04-2008
magazinus



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

Цитата:
Тебе расположение неважно, лишь бы одинаковые по содержанию были?

Ага. Без различающихся строк...

Всего записей: 1364 | Зарегистр. 14-01-2007 | Отправлено: 17:11 07-04-2008
crackcrack



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как у bat поменять ярлычок (иконку)?

----------
Ты навсегда в ответе за всех, кого приручил©Лис
Бойтесь равнодушных. Именно с их согласия совершаются все преступления©Ясенский

Всего записей: 3964 | Зарегистр. 20-04-2006 | Отправлено: 17:16 07-04-2008
gryu



дикий гусь
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
crackcrack
как и у всех.  
У ярлыка  через свойства.  
У самого файла - никак. (можно, но это нужно лезть в "ассоциации" ОС и это будет верно только для данной машины)

Всего записей: 13033 | Зарегистр. 15-03-2006 | Отправлено: 17:32 07-04-2008
igor_andreev

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

Цитата:
Ага. Без различающихся строк...

Тогда легче

Код:

copy /b 1.txt+2.txt 3.txt
type 3.txt | sort | uniq -d >4.txt

4.txt будет состоять из строк, которые есть и в 1.txt и в 2.txt  
uniq.exe тут http://sourceforge.net/projects/unxutils
 
 

Всего записей: 1705 | Зарегистр. 08-12-2004 | Отправлено: 18:04 07-04-2008
crackcrack



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

Цитата:
можно, но это нужно лезть в "ассоциации" ОС и это будет верно только для данной машины)

если можно в двух словах или ссылку
 
 
Добавлено:
и я правильно понимаю, что для всех bat файлов будет другая иконка, но одинаковая

----------
Ты навсегда в ответе за всех, кого приручил©Лис
Бойтесь равнодушных. Именно с их согласия совершаются все преступления©Ясенский

Всего записей: 3964 | Зарегистр. 20-04-2006 | Отправлено: 18:15 07-04-2008
Rush

Уже за тридцать...
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ну тогда так:

Код:
if wscript.arguments.count = 2 then
   fname = wscript.arguments.item(0):fname2 = wscript.arguments.item(1)
   dim newcounts, txtarr3()
   set fso = createobject("scripting.filesystemobject")
   set one = fso.opentextfile(fname, 1):txt = one.readall:one.close
   set two = fso.opentextfile(fname2, 1):txt2 = two.readall:two.close  
   if txt <> txt2 then
      txttmp = vbcrlf & txt2 & vbcrlf:txtarr = split(txt, vbcrlf)
      redim txtarr3(ubound(txtarr))
      for i=0 to ubound(txtarr)
         if instr(1, txttmp, vbcrlf & txtarr(i) & vbcrlf, 1) > 0 then  
            txtarr3(newcounts) = txtarr(i):newcounts = newcounts + 1          
         end if
      next
      redim preserve txtarr3(newcounts-1)
      txt = join(txtarr3, vbcrlf)
      set one = fso.opentextfile(fname & "_", 2, true):one.write txt:one.close
      newcounts = 0
      txttmp = vbcrlf & txt & vbcrlf:txtarr = split(txt2, vbcrlf)
      redim txtarr3(ubound(txtarr))
      for i=0 to ubound(txtarr)
         if instr(1, txttmp, vbcrlf & txtarr(i) & vbcrlf, 1) > 0 then  
            txtarr3(newcounts) = txtarr(i):newcounts = newcounts + 1          
         end if
      next
      redim preserve txtarr3(newcounts-1)
      txt = join(txtarr3, vbcrlf)
      set one = fso.opentextfile(fname2 & "_", 2, true):one.write txt:one.close
   end if
end if
wscript.quit

Всего записей: 3551 | Зарегистр. 20-11-2003 | Отправлено: 18:58 07-04-2008
magazinus



Tracker Mod
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
igor_andreev
Rush
Большое спасибо!

Всего записей: 1364 | Зарегистр. 14-01-2007 | Отправлено: 20:06 07-04-2008
Fraerok



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

Цитата:
@echo off  
chcp 1251  
 
for /f "tokens=*" %%a in (uninstall.log) do call :change_path "%%a"  
type uninstall.bak | find /v "\Quick Launch\" | find /v "(Безопасный режим).lnk">uninstall.log  
goto :eof  
 
:change_path  
set "line=%~1"  
set "line=%line:\Рабочий стол\Mozilla Sunbird.lnk=\Рабочий стол\Программы\Sunbird.lnk%"  
set "line=%line:\Программы\Mozilla Sunbird\Mozilla Sunbird.lnk=\Программы\Sunbird.lnk%"  
echo %line%>>uninstall.bak  
set "line="

скрипт работает, но только, если батник в той же папке находится. Как исправить? Дописывал к uninstall.??? приставку "%PROGRAMFILES%\Mozilla Sunbird\uninstall\uninstall.???" - не работает из другой директории =(

Всего записей: 1723 | Зарегистр. 11-05-2006 | Отправлено: 23:07 07-04-2008
01MDM



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

Код:
 
@echo off  
chcp 1251  
pushd "%PROGRAMFILES%\Mozilla Sunbird\uninstall"  
for /f "tokens=*" %%a in (uninstall.log) do call :change_path "%%a"  
type uninstall.bak | find /v "\Quick Launch\" | find /v "(Безопасный режим).lnk">uninstall.log
popd  
goto :eof  
 
:change_path  
set "line=%~1"  
set "line=%line:\Рабочий стол\Mozilla Sunbird.lnk=\Рабочий стол\Программы\Sunbird.lnk%"  
set "line=%line:\Программы\Mozilla Sunbird\Mozilla Sunbird.lnk=\Программы\Sunbird.lnk%"  
echo %line%>>uninstall.bak  
set "line="
 


Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 23:36 07-04-2008
FishError

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А можно сделать вывод результатов двух команд в одну строку в файле?  
time /t >> log.txt
date /t >> log.txt
Выводит в две строки, а желательно так: 12:15 - 12.12.2008

Всего записей: 1 | Зарегистр. 08-04-2008 | Отправлено: 09:52 08-04-2008
igor_andreev

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
FishError
echo %time:~0,8% %date% >> log.txt
 
 
Добавлено:
тьфу, вернее  %time:~0,5%

Всего записей: 1705 | Зарегистр. 08-12-2004 | Отправлено: 10:14 08-04-2008
Kilich



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

Цитата:
Ребята!  
А никто часом не знает, как в батнике написать нечто - чтобы можно было указать время отключение дисплея или не отключать никогда(как это можно сделать в свойствах заставки-питание)  
Очень нужно...

 
Ребята!!
Знатоки ну откликнитесь!!!
 
Добавлено:

Цитата:
Ребята!  
А никто часом не знает, как в батнике написать нечто - чтобы можно было указать время отключение дисплея или не отключать никогда(как это можно сделать в свойствах заставки-питание)  
Очень нужно...  
 
 
 
Ребята!!  
Знатоки ну откликнитесь!!!

 
разобрался самостоятельно!!!
 
 
@echo off  
powercfg /create BCCR  
powercfg /change BCCR /monitor-timeout-dc 5  
powercfg /change BCCR /monitor-timeout-ac 20  
powercfg /change BCCR /disk-timeout-dc 0  
powercfg /change BCCR /disk-timeout-ac 0  
powercfg /change BCCR /standby-timeout-dc 0  
powercfg /change BCCR /standby-timeout-ac 0  
powercfg /change BCCR /hibernate-timeout-dc 0  
powercfg /change BCCR /hibernate-timeout-ac 0  
powercfg /setactive BCCR  
@echo BCCR Power Settings Configured....  
 
>"\\Server1\Migration\%ComputerName%\powersettings.flg"  

Всего записей: 267 | Зарегистр. 18-09-2006 | Отправлено: 11:05 08-04-2008
01MDM



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Kilich
Молодец, вот что значит "свежая голова"
 
О  powercfg даже не знал...
 

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 16:07 08-04-2008
crackcrack



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Создал простейший файл для одновременного запуска 2 программ:
 
"C:\Program Files\Program1.exe"
"C:\Program Files\\Program2.exe"
 
При запуске с ярлыка все нормально. Однако, когда добавляю в автозагрузку,
загружается только одна - первая программа.
 
Vista Home.
 


----------
Ты навсегда в ответе за всех, кого приручил©Лис
Бойтесь равнодушных. Именно с их согласия совершаются все преступления©Ясенский

Всего записей: 3964 | Зарегистр. 20-04-2006 | Отправлено: 18:58 08-04-2008
01MDM



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
crackcrack
 
Запускай через start
 

Код:
 
@echo off
start "" "%programfiles%\Program1\Program1.exe"
start "" "%programfiles%\Program2\Program2.exe"
 


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



Tracker Mod
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
В папке много файлов, шаблон имени таков: AA-BB-CC-DD.dwg, есть случайные файлы, имена которых - от балды. Необходимо проверить файлы папки на соответствие шаблону, все, что не соответствует - удалить...

Всего записей: 1364 | Зарегистр. 14-01-2007 | Отправлено: 20:34 08-04-2008
igor_andreev

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
magazinus
Отсюда попробуй начать

Код:

dir /b | findstr /v /r "[A-Z]*-[A-Z]*-[A-Z]*-[A-Z]*\.dwg"

 
Тебе использование сторонних утилит критично? А то findstr только простые регекспы поддерживает, она даже {2} не понимает С sed или grep проще.
Можно еще поснимать атрибут "архивный" с нужных файлов, а остальные del /a:a

Код:

for %%a in (??-??-??-??.dwg) do attrib -a %%a


Всего записей: 1705 | Зарегистр. 08-12-2004 | Отправлено: 22:15 08-04-2008 | Исправлено: igor_andreev, 23:01 08-04-2008
01MDM



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

Цитата:
 
for %%a in (??-??-??-??.dwg) do attrib -a %%a  
 

 
Этот вариант допускает файлы с большим количеством символов (11-222-11-11.txt) в названии.
 
Ничего лучше не приходит на ум

Код:
 
for /f "tokens=*" %%i in ('dir /b ^| findstr /v /r "..-..-..-..\.dwg"') do del "%%i"
 


Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 23:21 08-04-2008
   

Страницы: 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.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru