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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » Командная строка, батники, сценарии (bat, cmd)

Модерирует : gyra, Maz

Widok (19-11-2007 12:08): лимит страниц. продолжаем здесь  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 109 110 111 112 113 114 115 116 117 118

   

KLASS



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Командная строка, батники\сценарии (bat, cmd)
Вопросы, задачи и их решения по работе с командной строкой, файлами, а также сопутствующие ссылки.

 
Важно: копируя батник через буфер обмена из форума не забывайте удалять пробелы в конце каждой строки, т.к. в некоторых случаях из-за этого программа будет работать неправильно!!!
 
Примечание: Большие куски кода заключайте в тэг [more]  
 
Смежные темы:
В помощь системному администратору » Автоматизация администрирования
Microsoft Windows » Задачи на bat-файлах 4
 
Полезные ссылки:
· Cmd. Описание от разработчиков
· Урок bat-аники (для начинающих)
· Набор GNU утилит для win32
· Пакет утилит для организации интерфейса в bat-файлах
· Использование ansi.sys
· cmdow — изменение параметров и видимости дос-окна
· blat — отправка почты из консоли
· Справка по командам в виде Html
· Команды RunDll32
· Quick Batch File Compiler - Позволяет превратить ваш батник в независимое приложение
· Пример - получение и обработка списка пользователей
 
 
Старая версия первого сообщения

Всего записей: 9735 | Зарегистр. 12-10-2001 | Отправлено: 04:28 24-09-2002 | Исправлено: Elroir, 19:35 11-09-2007
bredonosec



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

Цитата:
Точка с запятой для коментариев в батниках не используется.
Значит с регами спутал..  
Так при котором способе коммент также будет выводиться на екран? При обоих?  
А если в зареманной строке проскочит какое-нить значение, используемое в реестре (исследуемый и комментируемый батник выдирает из реестра некие записи, модифицирует их и кидает обратно), оно не погадится?  
ЗЫ. насчет echo хоть не ошибся - его назначение выводить на экран, или просто перевод строки?  
cainz

Цитата:
или, чтоб красиво смотрелось - @echo  
Что за эффект значок при исполнении дает?  

Всего записей: 16012 | Зарегистр. 13-02-2003 | Отправлено: 02:43 14-07-2005
Smitis



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
bredonosec
Отвечаю в обратном порядке:
 

Цитата:
Что за эффект значок при исполнении дает?

По умолчанию, командный прочессор выводит на экран строки, которые выполняет. Символ @ отключает вывод команды, перед которой стоит. Специальная форма echo - ECHO OFF отключает вывод всех команд начания со следующей. Значок @ перед ECHO  отключает вывод и текущей команды тоже. Таким образом команда @ECHO OFF отключает вывод выполняемых команд, начиная с текущей. Поэтому с неё всегда, как правило, начинают командные файлы. Уффф... писать дольше, чем разобраться...
 

Цитата:
Так при котором способе коммент также будет выводиться на екран?

Команда ECHO выводит на дисплей ЛЮБОЙ текст, после неё, исключая пробельные символы между ней и первым непробельным символом. Опускаю нюансы с ON/OFF, а также спец. символы. Таким образом можешь использовать её для вывода на экран не только коментариев, но и любого текста:

Код:
 
echo Это коментарий!
echo А это просто сообщение.
 

 
Короче, выдержка из хелпа ntcmds.chm
Подробнее...

Всего записей: 2435 | Зарегистр. 09-02-2003 | Отправлено: 23:50 14-07-2005 | Исправлено: Smitis, 23:55 14-07-2005
scup



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
01.01.05
a
b
c
d
02.02.04
a
b
c
d
a
b
 
Как батником оставить только даты и строки, начинающиеся на а?

Всего записей: 556 | Зарегистр. 04-04-2003 | Отправлено: 12:08 27-07-2005
Smitis



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

Цитата:
Как батником оставить только даты и строки, начинающиеся на а?


Код:
 
if "%str:~0,1%" == "a"  ......
if "%str:~0,1%" == "0" if "%str:~2,1%" == "." ......
if "%str:~0,1%" == "1" if "%str:~2,1%" == "." ......
if "%str:~0,1%" == "2" if "%str:~2,1%" == "." ......
if "%str:~0,1%" == "3" if "%str:~2,1%" == "." ......
 

Переменная str содержит проверяемую строку.
Даты проверять упрощённо - первый символ 0,1,2 или 3, третий - точка
 
 
Добавлено:
Это для виндов 2000, XP, 2003 ....

Всего записей: 2435 | Зарегистр. 09-02-2003 | Отправлено: 13:53 27-07-2005
scup



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Smitis  можешь весь батник привести, используя мою задачу?

Всего записей: 556 | Зарегистр. 04-04-2003 | Отправлено: 21:49 27-07-2005
Smitis



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

Цитата:
можешь весь батник привести, используя мою задачу?

Где ж я его возьму, батник то?
Собственно, я уже тебе написал. Подставляй вместо многоточий свои команды, например, переход на метку с алгоритмом обработки. Откуда ты берёшь строки, извини, не знаю. Попробуй сам написать

Всего записей: 2435 | Зарегистр. 09-02-2003 | Отправлено: 01:19 29-07-2005 | Исправлено: Smitis, 01:20 29-07-2005
scup



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Smitis Ладно, я уже решил задачку с помощью findstr. Спасибо за помощь.

Всего записей: 556 | Зарегистр. 04-04-2003 | Отправлено: 09:50 29-07-2005
igor_andreev

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

Код:
 
@ECHO OFF & SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
 
FOR /F "TOKENS=*" %%A IN (your_old.txt) DO (
  SET str=%%A
  IF "!str:~0,1!" EQU "a" ECHO %%A>>your_new.txt
  IF "!str:~0,1!" EQU "0" IF "!str:~2,1!" EQU "." ECHO %%A>>your_new.txt
  IF "!str:~0,1!" EQU "1" IF "!str:~2,1!" EQU "." ECHO %%A>>your_new.txt
  IF "!str:~0,1!" EQU "2" IF "!str:~2,1!" EQU "." ECHO %%A>>your_new.txt
  IF "!str:~0,1!" EQU "3" IF "!str:~2,1!" EQU "." ECHO %%A>>your_new.txt
)
 
ENDLOCAL
 


Всего записей: 1667 | Зарегистр. 08-12-2004 | Отправлено: 09:58 29-07-2005
TCPIP

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
igor_andreev
Игорь, можно ли решить следующую задачу, помогите пожалуйста:
Имеется набор папок. Необходимо создать копию этой папки (с сохранением ее структуры), но так, чтобы внутри скопированных папок теперь остались только файлы с определенным именем.  
Конкретно: есть папка My Music с вложенными в нее папками и музыкальными файлами. Плюс в каждой папке лежит файл URL.txt. Хотелось бы создать копию папки My Music, так чтобы теперь во всех папках копии остался лежать только этот файл. Причем файл URL.txt нужно из источника перемещать --- то есть в оригинальной папке My Music он должен исчезнуть после такой операции (а все остальные файлы на должны остаться на источнике). Ну и, разумеется, хотелось бы, чтобы эта операция была повторяемой, то есть при повторном ее проведении, если структура источнка изменилась (появились новые папки и файлы), уже имеющиеся папки и файлы URL.txt на адресате не должны затираться.

Всего записей: 4667 | Зарегистр. 31-01-2003 | Отправлено: 03:18 18-08-2005 | Исправлено: TCPIP, 03:21 18-08-2005
volodyalipkin



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
TCPIP
Я хоть и не
Цитата:
igor_andreev  
, но можно отвечу?
 
cd /D "C:\Documents and Settings\TCPIP\My Documents\My Music"
xcopy Url.txt c:\kuda_xochesh_pisat /E
del /s /q Url.txt
 
В первой строчке должен стоять путь к твоей папке с музыкой
Во второй строке - /E для создания пустых директорий. Иначе - /S

Всего записей: 768 | Зарегистр. 12-10-2002 | Отправлено: 05:15 18-08-2005
Garrett

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть данные (текстовая колбаса одинаковой ширины, много мегабайт).
Иногда нужно вырезать n-ое кол-во символов с определенной позиции в каждой строке(н-р, удалить 2 первых(или с 7 по 9) символа в каждой строке).
Какой командой или батником можно это сделать?
Спасибо.

Всего записей: 2681 | Зарегистр. 16-10-2003 | Отправлено: 12:48 18-08-2005
igor_andreev

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

Код:
 
1234567890
1234567890
1234567890
1234567890
1234567890
 

 
test.cmd

Код:
 
@ECHO OFF & SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
 
FOR /F "TOKENS=*" %%A IN (test.txt) DO (
 SET STRING=%%A
 ECHO !STRING:~2!>>test_2.txt
 ECHO !STRING:~0,6!!STRING:~8!>>test_3.txt
)
 
ENDLOCAL
 

На многомегабайтных файлах что *.cmd, что *.vbs - дооолго работают

Всего записей: 1667 | Зарегистр. 08-12-2004 | Отправлено: 15:29 18-08-2005 | Исправлено: igor_andreev, 15:35 18-08-2005
Garrett

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
igor_andreev
Работает...
Cпасибо.
Напустил для примера на 267 метровый файл, сижу, жду...
 
Снял, т.к. за 12 минут обработал всего 22 метра.
Придет писать свою  прогу для таких дел.  
 
А где можно почитать про командные сценарии?

Всего записей: 2681 | Зарегистр. 16-10-2003 | Отправлено: 17:42 18-08-2005 | Исправлено: Garrett, 17:49 18-08-2005
volodyalipkin



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

Всего записей: 768 | Зарегистр. 12-10-2002 | Отправлено: 19:50 18-08-2005
Garrett

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
volodyalipkin
Что-то надо будет ставить на машину? И не будет мешать всему остальному?

Всего записей: 2681 | Зарегистр. 16-10-2003 | Отправлено: 22:33 18-08-2005
volodyalipkin



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ставить надо Perl (www.activestate.com). Ничему мешать не будет.

Всего записей: 768 | Зарегистр. 12-10-2002 | Отправлено: 04:26 19-08-2005
BBMike



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

Всего записей: 1497 | Зарегистр. 10-09-2001 | Отправлено: 18:04 26-08-2005
TCPIP

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
volodyalipkin
05:15 18-08-2005
Цитата:
но можно отвечу?  
 
cd /D "C:\Documents and Settings\TCPIP\My Documents\My Music"  
xcopy Url.txt c:\kuda_xochesh_pisat /E  
del /s /q Url.txt  

Конечно!    Спасибо!

Всего записей: 4667 | Зарегистр. 31-01-2003 | Отправлено: 18:57 26-08-2005
bredonosec



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

Цитата:
ntcmds.chm  
- Это по командной строке для ХР, которая, вроде как несколько дополнена и расширена по сравнению с 9х. А как в 9х такое может зваться? (по хелпу полазил - что-то не нахожу.. единственный batch - инструкции по созданию унаттенд инсталла )

Всего записей: 16012 | Зарегистр. 13-02-2003 | Отправлено: 22:18 27-08-2005
Da_Neil



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Кто-нибудь может объяснить, почему не работает такая команда:  

Код:
START "Post" "C:\WINDOWS\system32\cmd.exe" /c ""S:\Multimedia\Soundz Good\Exact Audio Copy\Scripts\eac-enc.bat" "A & B.wav" "E:\Thunderbird\Atmp!-!9(.wav" "E:\Thunderbird\Atmp!-!9(.ape" "Artist" "Album"  LOW "2331" "Genre""

Процессор спотыкается на символе "&" и не передаёт в батник параметры до этого символа.  
 
Предыстория:
Первый батник вызывается EAC'ом с такой командной строкой:

Код:
"C:\WINDOWS\system32\cmd.exe" /c ""S:\Multimedia\Soundz Good\Exact Audio Copy\Scripts\eac-enc.bat" "A & B.wav" "E:\Thunderbird\Atmp(957).wav" "E:\Thunderbird\Atmp(957).ape" "Artist" "Album"  LOW "2331" "Genre""

Второй батник вызывается из первого с точно такими же параметрами:

Код:
START "Post" CMD.EXE /c "%pathToEacPost% %*"

Но почему-то это не работает, если в имени файла встречается "&".  
 
Добавлено:
Похоже, требуется на лету поменять в параметрах & на ^&. Как это сделать?

Всего записей: 3420 | Зарегистр. 05-03-2002 | Отправлено: 13:39 29-08-2005
   

Страницы: 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 109 110 111 112 113 114 115 116 117 118

Компьютерный форум Ru.Board » Компьютеры » Программы » Командная строка, батники, сценарии (bat, cmd)
Widok (19-11-2007 12:08): лимит страниц. продолжаем здесь


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.Board
© Ru.Board 2000-2020

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru