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

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

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

Всего записей: 9 | Зарегистр. 26-03-2008 | Отправлено: 12:31 09-09-2008
lid111

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вот задача: есть каталог с кучей подкаталогов, в которых, на разном уровне вложенности папок есть файлы с именем, например, ААА и файлы с именем ВВВ. В ряде случаев эти файлы находятся в незаархивированном виде, в ряде случаев, напротив - в архивах (это незапароленные архивы форматов rar, zip и 7z). Возможно ли с помощью bat-файла одним махом найти все эти файлы ААА и BBB, где бы они не находились, и переименовать ААА в XXX, а BBB - в YYY - и в архивах, и вне архивов?
 
Если это задача запредельная для bat-аники, может, кто посоветует (можно в ПМ), как еще ее можно решить с наименьшими усилиями?

Всего записей: 1547 | Зарегистр. 15-09-2006 | Отправлено: 19:04 09-09-2008
nexgen

Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Возникла такая задача: написать батник для удаления из папки всех подпапок с файлами кроме следующих папок
All Users, Default User, LocalService, NetworkService, Администратор, Administrator

Всего записей: 270 | Зарегистр. 01-08-2006 | Отправлено: 21:31 10-09-2008
KapralBel



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
nexgen
Лень делать, только подскажу идею
Переход в папку
по FOR /D - перебор всех папок
Сравниваешь по имени - если не то RD /q /s

Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 21:43 10-09-2008
nexgen

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

Всего записей: 270 | Зарегистр. 01-08-2006 | Отправлено: 21:51 10-09-2008
KapralBel



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

Код:
@Echo Off
PushD "C:\Documents and Settings"  
For /D %%a in (*) Do Call :ll "%%a"
PopD
GoTo :EOF
 
:ll
If %1=="All Users"      GoTo :EOF
If %1=="Default User"   GoTo :EOF
If %1=="LocalService"   GoTo :EOF
If %1=="NetworkService" GoTo :EOF
If %1=="Администратор"  GoTo :EOF
If %1=="Administrator"  GoTo :EOF
RD /q /s %1
GoTo :EOF
 

Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 21:59 10-09-2008 | Исправлено: KapralBel, 21:59 10-09-2008
nexgen

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

Всего записей: 270 | Зарегистр. 01-08-2006 | Отправлено: 22:18 10-09-2008
Alexx123

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Уважаемые знатоки, напомните, как примонтировать в Windows папку в качестве диска/дисковода. Совсем команда из головы вылетела.

Всего записей: 45 | Зарегистр. 11-12-2006 | Отправлено: 16:12 12-09-2008
KapralBel



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

Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 16:15 12-09-2008
lid111

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Задача: в папке A на разных уровнях вложенности, находятся папки C, D, E, F. Надо удалить их вместе с содержимым. Батник нужен для ускорения ручного уменьшения дистрибутива Windows.

Всего записей: 1547 | Зарегистр. 15-09-2006 | Отправлено: 17:21 12-09-2008
BlackBerry

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Можно ли пакетными средствами решить следующую задачу:
 
Найти в файле X строку с подстрокой Y и распечатать следующие 1(2,3,4 ...) строки за
найденной?  

Всего записей: 196 | Зарегистр. 08-09-2004 | Отправлено: 18:34 12-09-2008
Tipulatoid



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

Код:
@echo off
set file=X
set phrase=Y
set lines_to_echo=5
 
for /f "skip=2 tokens=1 delims=[]" %%a in ('find /n "%phrase%" %file%') do set line_num=%%a
for /f "skip=%line_num% tokens=*" %%a in (%file%) do call :line "%%a"
goto :eof
 
:line
set /a count+=1
if %count% leq %lines_to_echo% echo %~1
goto :eof
 

Всего записей: 349 | Зарегистр. 22-12-2006 | Отправлено: 06:19 13-09-2008 | Исправлено: Tipulatoid, 07:18 13-09-2008
01MDM



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

Цитата:
Задача: в папке A на разных уровнях вложенности, находятся папки C, D, E, F. Надо удалить их вместе с содержимым.

 

Код:
 
@echo off
pushd "a"
for %%i in (C D E F) do (
    for /r /d %%j in (*) do if /i "%%~nxj"=="%%i" rd /s /q "%%j"
)
popd
 


Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 11:19 13-09-2008 | Исправлено: 01MDM, 11:21 13-09-2008
XXXXL



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте!  
Снова обращаюсь к вам за помощью.
 
В файле l.txt есть линк:

Код:
http://forum.ru-board.com/topic.cgi?forum=5&topic="замена"&start=1300

Часть этой ссылки "замена" нужно заменить на ту, которая в z.txt пример:

Код:
12345

Результат получаем в r.txt :

Код:
http://forum.ru-board.com/topic.cgi?forum=5&topic=12345&start=1300

 
Спасибо!

Всего записей: 286 | Зарегистр. 16-05-2007 | Отправлено: 14:04 13-09-2008 | Исправлено: XXXXL, 14:06 13-09-2008
Ant0n1o



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Хочу с помощью батника свернуть все открытые окна. Возможно?
 
Добавлено:
ых, догадался
в блокноте написать
 
[Shell]
Command=2
IconFile=%SystemRoot%\system32\shell32.dll,34
[Taskbar]
Command=ToggleDesktop  
 
сохранить как *.scf
вызывать из батника

Всего записей: 34 | Зарегистр. 14-12-2007 | Отправлено: 14:25 13-09-2008 | Исправлено: Ant0n1o, 14:40 13-09-2008
Tipulatoid



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

Код:
@echo off
for /f "tokens=*" %%a in (z.txt) do set newvalue=%%a
for /f "tokens=1-6 delims=&=" %%a in (l.txt) do echo %%a=%%b^&%%c=%newvalue%^&%%e=%%f>r.txt
 

Всего записей: 349 | Зарегистр. 22-12-2006 | Отправлено: 14:49 13-09-2008
XXXXL



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Tipulatoid, спасибо тебе, то, что и нужно было
Только вот пробел после вставленого кода появляется:

Код:
http://forum.ru-board.com/topic.cgi?forum=5&topic=55555555 &start=1300

Убрать его у меня не получилось
 
 
Добавлено:
Если ешё не надоел, помогите решить ещё задачку.
С текстового документа "1.txt" нужно скопировать всё, что находится между  d& и &= в "2.txt"
 
Пример:
Имеем в "1.txt":

Код:
бла3бла?0балd&bla-bla-bla&=бла((бла%бла

Получаем в "2.txt":  

Код:
bla-bla-bla

Всего записей: 286 | Зарегистр. 16-05-2007 | Отправлено: 15:19 13-09-2008
Tipulatoid



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

Цитата:
Убрать его у меня не получилось

Либо в z.txt есть пробел в конце строки либо внимательно почитай шапку, там где Важно:

Цитата:
С текстового документа "1.txt" нужно скопировать всё, что находится между  d& и &= в "2.txt"


Код:
@echo off
for /f "tokens=1-3 delims=d&" %%a in (1.txt) do echo %%b>2.txt

Всего записей: 349 | Зарегистр. 22-12-2006 | Отправлено: 16:59 13-09-2008
XXXXL



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Tipulatoid, огромное спасибо!  
Всё работает как надо )))
Почитал шапку, там где "Важно" и в прямь помогло.
Ещё раз спасибо и пока.  
 
Добавлено:
В текстовом документе больше 1000 букв ,символов,цифр, нужно удалить все что идут между десятым и сотым.  
Это возможно?

Всего записей: 286 | Зарегистр. 16-05-2007 | Отправлено: 18:13 13-09-2008 | Исправлено: XXXXL, 19:34 13-09-2008
01MDM



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

Цитата:
В текстовом документе больше 1000 букв ,символов,цифр, нужно удалить все что идут между десятым и сотым.

На каждой строчке?
 
Наверное это можно сделать с помощью sed (это было бы правильней), но нет времени разбираться. Вариант ниже не гарантирует корректность.

Код:
 
@echo off
setlocal
for /f "tokens=*" %%i in (1.txt) do call:1 "%%i"
move /y "1.tmp" "1.txt"
goto:eof
 
:1
set "line=%~1"
echo %line:~0,10%%line:~100% 1>>"1.tmp"
 

 

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 22:07 13-09-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