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

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

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Elroir
 
C:\Dokumente und Einstellungen\alexander>reg query HKCR\cmdfile\shell\edit\command
 
! REG.EXE VERSION 3.0
 
HKEY_CLASSES_ROOT\cmdfile\shell\edit\command
    <NO NAME>   REG_SZ  %SystemRoot%\System32\NOTEPAD.EXE %1
 

Всего записей: 13 | Зарегистр. 13-11-2007 | Отправлено: 00:25 23-11-2007
Elroir



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
audi6
Может это и не то (а это все-таки то), но вместо REG_SZ, там должно быть REG_EXPAND_SZ.
Создай cmd_edit.reg файл и скопируй в него следующий код:

Код:
 
Windows Registry Editor Version 5.00
 
[HKEY_CLASSES_ROOT\cmdfile\shell\edit\command]
@=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,25,\
  00,5c,00,53,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,4e,00,4f,00,\
  54,00,45,00,50,00,41,00,44,00,2e,00,45,00,58,00,45,00,20,00,25,00,31,00,00,\
  00
 
 

Запусти этот .reg файл. Проверь, работает ли редактирование.

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

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

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

Код:
 
@echo off
setlocal
 
rem вычисление дня недели для Windows 2000 (в XP должна тоже работать)
rem начиная с 2001г. по 2099г. включительно (алгоритм тестировался в Еxcel)
rem в конце вычислений %dD% содержит день недели: 0 - понедельник .. 6 - воскресенье
rem by othy
 
SET dt=%Date%
SET dY=%dt:~-2%
SET dD=%dt:~-10,2%
SET dM=%dt:~-7,2%
 
If "%dD:~0,1%" == "0" Set dD=%dD:~1,1%
If "%dM:~0,1%" == "0" Set dM=%dM:~1,1%
If "%dY:~0,1%" == "0" Set dY=%dY:~1,1%
 
SET /A fY="dY & 0x03"
 
If %dM%==1 (If %fY%==0 (Set /A dD+=4) else Set /A dD+=5)
If %dM%==2 (If %fY%==0 (Set /A dD+=7) else Set /A dD+=8)
If %dM%==3 (Set /A dD+=8)
If %dM%==4 (Set /A dD+=11)
If %dM%==5 (Set /A dD+=6)
If %dM%==6 (Set /A dD+=9)
If %dM%==7 (Set /A dD+=11)
If %dM%==8 (Set /A dD+=7)
If %dM%==9 (Set /A dD+=10)
If %dM%==10 (Set /A dD+=5)
If %dM%==11 (Set /A dD+=8)
If %dM%==12 (Set /A dD+=10)
 
SET /A dD=(dD+dY/4+dY) %% 0x07
echo %dD%
 
endlocal
 

Всего записей: 62 | Зарегистр. 28-11-2005 | Отправлено: 04:56 23-11-2007 | Исправлено: othy, 05:02 23-11-2007
Etalon

BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
s800
Установка соединения, запуск Internet Explorer'а, открытие  нужной Web-странички, завершение работы браузера и разрыв DialUp соединения на Windows Powershell

Код:
 
rasdial.exe элемент [пользователь [пароль]]
$ie = New-Object -com "InternetExplorer.Application"
$ie.Navigate("http://www.ya.ru")
$ie.Visible = 1
$ie.Close()
rasdial.exe [элемент] /DISCONNECT
 

Всего записей: 306 | Зарегистр. 03-02-2006 | Отправлено: 14:21 23-11-2007
DenRassk



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

Цитата:
@echo off  
if %1==? set /p par="enter parameter(s): "  
echo    ...Running script with parametr(s): %par%  
pause  

не получается так ... пишет - неожиданное появление set ... пробовал почитать Help ... не помогло

Всего записей: 404 | Зарегистр. 27-11-2003 | Отправлено: 17:37 23-11-2007
KosarKosta

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
У меня есть вопрос о том, как подсоединить сетевой диск.
Пишу:
NET USE * \\ip-адрес (сет. имя)\C$
Если имена и пароли совпадают, то соединяется без дополнительных вопросов.
Но если имя и пароль не совпадает, то спрашивает ввести имя пользователя и пароль.
Ввожу их, но выдается системная ошибка 86, хотя ввожу абсолютно правильно.
Если написать:
NET USE * \\ip-адрес (сет. имя)\C$ пароль
то тоже подсоединяется. Но это если совпадают имена.
А если имена не совпадают, то не соединится.
Куда нужно вписывать имя пользователя?

Всего записей: 15 | Зарегистр. 16-10-2007 | Отправлено: 18:27 23-11-2007
Ang



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
KosarKosta
Вот:
NET USE * \\IP-ADDRES\C$ /USER:<ИМЯ_ПОЛЬЗОВАТЕЛЯ> <ПАРОЛЬ>
только без <>.

Всего записей: 251 | Зарегистр. 25-07-2001 | Отправлено: 18:37 23-11-2007
01MDM



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

Цитата:
не получается так ...

На примере блокнота
Создаешь батник, в нем первыми строчками вписываешь:

Код:
 
@echo off
 if %1==? set /p par="enter parameter(s): "
:: Дальше твоя команда, например start notepad, параметрами которые ввели т.е %par%
start notepad %par%
:: Все
 

 
Создаешь ярлык (ведь речь шла о них) на батник, где в свойствах ярлыка в поле "Объект" дописываешь вопросительный знак после кавычек через пробел. При запуске будет появляться черное окно с запросом. Вводишь название файла (если надо то указываешь путь) и у тебя блокнот откроет этот файл.  
 
 
 

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 18:46 23-11-2007
aka_smile

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

Всего записей: 174 | Зарегистр. 12-01-2007 | Отправлено: 12:18 24-11-2007
Maza Faka



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

Код:
 
rar u -o+ archive.rar addedfile.exe
 

Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 12:57 24-11-2007 | Исправлено: Maza Faka, 12:59 24-11-2007
KosarKosta

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Уважаемые знатоки!
а можно ли в batch написать программу, что-то типа перебора
Напр., есть буквы a, b, c, d перечисленные в блокноте a.txt
нужно перебрать все возможные значения от a до dddd так, чтобы каждый из вариантов записались в блокнот b.txt
Плиз, помогите ради ознокомительных целях с batch скриптом

Всего записей: 15 | Зарегистр. 16-10-2007 | Отправлено: 13:02 24-11-2007
Elroir



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

Код:
 
@echo off
setlocal enabledelayedexpansion
set "num_of_letters=0"
for /f %%a in (a.txt) do (
set "letters=!letters! %%a"
set /a "num_of_letters+=1"
)
if %num_of_letters% gtr 26 (
echo cannot proceed - number of letters is greater then 26
goto :EOF
)
set "1=a"&set "2=b"&set "3=c"&set "4=d"
set "5=e"&set "6=f"&set "7=g"&set "8=h"
set "9=i"&set "10=j"&set "11=k"&set "12=l"
set "13=m"&set "14=n"&set "15=o"&set "16=p"
set "17=q"&set "18=r"&set "19=s"&set "20=t"
set "21=u"&set "22=v"&set "23=w"&set "24=x"
set "25=y"&set "26=z"
set "count=1"
:: creating run_fors.cmd
echo @echo off>>run_fors.cmd
for %%a in (%letters%) do call :append_for %%a
echo echo %args%^>^>b.txt>>run_fors.cmd
for /l %%a in (1,1,%num_of_letters%) do echo ^)>>run_fors.cmd
call run_fors.cmd
del /q run_fors.cmd
goto :EOF
:append_for
echo for %%%%!%count%! in ^(%letters%^) do ^(>>run_fors.cmd
set "args=%args%%%%%!%count%!"
set /a "count+=1"
 

Каждая буква в файле a.txt должна быть на новой строчке.
 
 
 
Добавлено:
Вот еще один вариант - без создания вспомогательного файла, без ограничения в 26 букв, но работающий раза в 2 медленнее:

Код:
 
@echo off
setlocal enabledelayedexpansion
set "num_of_letters=0"
for /f %%a in (a.txt) do (
set "letters=!letters! %%a"
set /a "num_of_letters+=1"
)
call :main_perm %num_of_letters%
goto :EOF
:main_perm  
if "%1"=="1" (
for %%a in (%letters%) do echo %~2%%a>>b.txt
goto :EOF
)
for %%a in (%letters%) do (
set /a "level=%1-1"
call :main_perm !level! %2%%%a
)  
 

Здесь тоже каждая буква в файле a.txt должна быть на новой строчке.

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

Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 15:28 24-11-2007 | Исправлено: Elroir, 15:35 24-11-2007
KosarKosta

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Класс! Большое спасибо.
Работае отлично.
А где нужно вписать условия, чтобы он перебирал в строке с определенным количеством  букв, т.е., ну скажем, в пределах слова из 6 букв.

Всего записей: 15 | Зарегистр. 16-10-2007 | Отправлено: 18:40 24-11-2007
Elroir



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

Цитата:
А где нужно вписать условия ...

Не понял вопроса.


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

Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 21:25 24-11-2007
KosarKosta

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Я имел в виду то, как сделать так, чтобы перебор происходил только в определенном количестве букв в строке. Когда в блокноте 26 букв, он, соответственно, перебирает по всем этим 26 в строке. Хотелось бы самому задавать длину строки, т.е. количество букв в строке, в пределах который происходил бы перебор всех 26 букв. Често не знаю, нужно ли ставить в программе условия. Возможно нужно несколько переделать программу. Пробовал для этого переделывать - нифига - программа перестает работать.

Всего записей: 15 | Зарегистр. 16-10-2007 | Отправлено: 23:53 24-11-2007
Elroir



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

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

Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 00:06 25-11-2007
KosarKosta

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Elroir
Извини, если плохо объясняю.
Ну, хорошо, напр. возьмем слово "home". В этом слове 4 буквы. Я хочу, чтобы перебирая все 26 букв в пределах длины слова в 4 буквы, у мены составилось это слово. Ну, какое-то конкретное слово определять не надо, главное, чтобы можно было изменять длину слова, в пределах которых делался бы перебор всех 26 букв.

Всего записей: 15 | Зарегистр. 16-10-2007 | Отправлено: 00:17 25-11-2007 | Исправлено: KosarKosta, 00:29 25-11-2007
Elroir



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KosarKosta
Вот теперь понял (надеюсь правильно).
Немного изменил первый код:

Код:
 
@echo off
setlocal enabledelayedexpansion
set "num_of_letters=4"
for /f %%a in (a.txt) do (
set "letters=!letters! %%a"
)
set "1=a"&set "2=b"&set "3=c"&set "4=d"
set "5=e"&set "6=f"&set "7=g"&set "8=h"
set "9=i"&set "10=j"&set "11=k"&set "12=l"
set "13=m"&set "14=n"&set "15=o"&set "16=p"
set "17=q"&set "18=r"&set "19=s"&set "20=t"
set "21=u"&set "22=v"&set "23=w"&set "24=x"
set "25=y"&set "26=z"
set "count=1"
:: creating run_fors.cmd
echo @echo off>run_fors.cmd
for /l %%a in (1,1,%num_of_letters%) do call :append_for %%a
echo echo %args%^>^>b.txt>>run_fors.cmd
for /l %%a in (1,1,%num_of_letters%) do echo ^)>>run_fors.cmd
call run_fors.cmd
del /q run_fors.cmd
goto :EOF
:append_for
echo for %%%%!%count%! in ^(%letters%^) do ^(>>run_fors.cmd
set "args=%args%%%%%!%count%!"
set /a "count+=1"
 

В выделенной строчке, число 4 - это как раз и есть число букв в слове То есть, если надо получить все слова из 6-и букв, составленные из заданных символов, то в этой строчке надо поставить цифру 6, а в файл a.txt внести нужные символы.  

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

Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 01:28 25-11-2007
KosarKosta

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

Всего записей: 15 | Зарегистр. 16-10-2007 | Отправлено: 01:58 25-11-2007 | Исправлено: KosarKosta, 02:20 25-11-2007
aka_smile

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Maza Faka
твоя команда не работает (может я  там чего не понял). Но вот нашёл работающую команду.

Код:
rar a archive.zip  file.exe
rar a archive.zip  Folder_with_files

file.ехе пакуется нормально в ЗИП.
Значит теперь встают следующие вопросы.  
1. Объясни почему команда с добалением папки в архив не срабатывает, а если я уберу расширение ЗИП, то в РАР нормально пакует папку.
2. Как объединить в одну строку добавление файла и папки в один существующий архив?

Всего записей: 174 | Зарегистр. 12-01-2007 | Отправлено: 05:19 25-11-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

Компьютерный форум 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