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

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



Newbie
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Разобрался! Извеняюсь что тупил...
 
вот, может кому пригодитса:
 
rar a -ag_DDMM -dh -m5 pac.000 *.xls
 
Получаетса архив pac_0210.000 с нужными (напимер *.xls) файлами.

Всего записей: 23 | Зарегистр. 19-03-2007 | Отправлено: 22:53 02-10-2009 | Исправлено: 22247, 22:54 02-10-2009
xdru

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Понадобилось заархивировать в .zip архив каждый файл отдельно из папки с каталогами (текстовая библиотека).
Т.е. имея например 3 файла 1.txt, 2.txt, 3.txt на выходе надо получить 1.txt.zip, 2.txt.zip, 3.txt.zip.
 
Консольный winrar не умеет работать с zip, пробовал info zip - мало функциональности, не разобрался как сделать..
Помогите пожалуйста!

Всего записей: 6 | Зарегистр. 04-10-2008 | Отправлено: 17:17 03-10-2009
01MDM



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
xdru
Наверное 7zip оптимальный выбор. Имхо.

Код:
 
C:\Test> for %i in (*.txt) do 7za a -tzip "%i.zip" "%i"
 


Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 17:35 03-10-2009
xdru

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

Цитата:
xdru
Наверное 7zip оптимальный выбор. Имхо.
 
Код:
 

Код:
C:\Test> for %i in (*.txt) do 7za a -tzip "%i.zip" "%i"

 

Спасибо, то что надо! Только почему то батник с таким кодом вылетает сразу же, а если в cmd руками писать все работает, почему так?
я только set изменил на свой каталог с файлами:

Код:
for %i in (D:\test\*.txt) do 7za a -tzip "%i.zip" "%i"  

Всего записей: 6 | Зарегистр. 04-10-2008 | Отправлено: 20:22 03-10-2009
bomzzz



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
скорее всего нада по одному процентику добавь перед каждым процентиком
for %%i in (D:\test\*.txt) do 7za a -tzip "%%i.zip" "%%i"  
а вот в конце не знаю - пробовать нада. ну такого типа

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 20:32 03-10-2009 | Исправлено: bomzzz, 20:37 03-10-2009
vovanius1



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

Цитата:
Configuration for interface "Internet"  
    Statically Configured DNS Servers:    ххх.ххх.ххх.ххх  
                                                      ууу.ууу.ууу.ууу  
    Register with which suffix:           None  
 
 
вот как бы оттуда выкусить адреса и присвоить их переменным?

 
Проблема решена. Может, кому пригодится:
 
@echo off
call :get_dns_servers
echo %primary_dns%
echo %secondary_dns%
pause
exit
 
:get_dns_servers
for /f "skip=2 tokens=5" %%i in ('netsh interface ip show dns "Internet"') do set primary_dns=%%i & goto get_secondary
:get_secondary
for /f "skip=3 tokens=1" %%i in ('netsh interface ip show dns "Internet"') do set secondary_dns=%%i & goto :eof

Всего записей: 276 | Зарегистр. 17-02-2007 | Отправлено: 20:45 03-10-2009 | Исправлено: vovanius1, 20:53 03-10-2009
xdru

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

Цитата:
скорее всего нада по одному процентику добавь перед каждым процентиком
for %%i in (D:\test\*.txt) do 7za a -tzip "%%i.zip" "%%i"  
а вот в конце не знаю - пробовать нада. ну такого типа

да, теперь заработало, спасибо 01MDM, bomzzz!
интересно, с чем это связано (я про проценты).
И еще вопрос, как можно изменить код, чтобы он и в подпапках работал?

Всего записей: 6 | Зарегистр. 04-10-2008 | Отправлено: 20:51 03-10-2009
01MDM



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

Цитата:
интересно, с чем это связано (я про проценты).

Такой синтаксис.

Цитата:
И еще вопрос, как можно изменить код, чтобы он и в подпапках работал?


Код:
 
@echo off
for /f "tokens=*" %%i in ('dir /b /s "D:\test\*.txt"') do 7za a -tzip "%%i.zip" "%%i"
 

 

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 20:59 03-10-2009
bomzzz



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

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 21:02 03-10-2009
xdru

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

Всего записей: 6 | Зарегистр. 04-10-2008 | Отправлено: 21:20 03-10-2009
vitrzn



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
01MDM
Может тогда и мне поможете ?
нужно этот код:

Цитата:
@echo off  
for /f "tokens=*" %%i in ('dir /b /s "D:\test\*.txt"') do 7za a -tzip "%%i.zip" "%%i"

 
подправить так чтобы архивировались все файлы внутри папки с присвоением архиву имя папки
т.е. было .\1\ 2.txt 3.txt  
а стало .\1\1.zip
 
было бы идеально если после архивирования и удалялись архивируемые файлы
(тип/расширение файлов одно *.txt)

Всего записей: 1358 | Зарегистр. 28-10-2007 | Отправлено: 17:12 04-10-2009
ZDik

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

Цитата:
@echo off  
setlocal  
 
for /f "tokens=*" %%i in (list.txt) do call:check "%%i"  
goto:eof  
     
:check  
set /a cnt+=1      
if exist z:\%1 (  
    for /f "tokens=*" %%i in ('dir /b /s /a z:\%1') do (  
        if %%~zi gtr 0 set "isEmpty=-" && goto:md  
    )  
)  
 
:md  
md "%cnt%_%~1%isEmpty%"  
set "isEmpty="

как сделать нумерацию в начале имени каталога двух цифренной (01-02--99)

Всего записей: 164 | Зарегистр. 15-03-2006 | Отправлено: 13:48 05-10-2009
crotoff

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

Всего записей: 956 | Зарегистр. 17-04-2007 | Отправлено: 14:13 05-10-2009
01MDM



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

Цитата:
как сделать нумерацию в начале имени каталога двух цифренной (01-02--99)  


Код:
 
....
 
:md  
set "num=0%cnt%"
md "%num:~-2%_%~1%isEmpty%"  
set "isEmpty="
 


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



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте ребята!
Помогите решить сложную для меня задачу.
В директории "C:\Resource\img" подкаталогов с различной графикой, нужно со всех подкаталогов скопировать файлы расширения ".gif" в папку "C:\Resource\img\GIF" и если встретятся одноименные файлы, то просто заменить.
 
Спасибо!

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



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

Цитата:
подправить так чтобы архивировались все файлы внутри папки с присвоением архиву имя папки

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

Код:
 
@echo off
setlocal
 
pushd "d:\test"
for %%i in ("%cd%") do set "name=%%~nxi"
 
7za a -tzip "%name%.zip" .\*
del /s *.txt
popd  
 

 
 
 
Добавлено:
XXXXL

Цитата:
В директории "C:\Resource\img" подкаталогов с различной графикой, нужно со всех подкаталогов скопировать файлы расширения ".gif" в папку "C:\Resource\img\GIF" и если встретятся одноименные файлы, то просто заменить.  


Код:
 
@echo off
setlocal
2>nul md "C:\Resource\img\GIF"
copy /y "C:\Resource\img\*.gif" "C:\Resource\img\GIF"
 
for /d %%i in ("C:\Resource\img\*") do (
    if not "%%~ni"=="GIF" (
        for /f "tokens=*" %%j in ('dir /b /s /a "%%i\*.gif"') do copy /y "%%j" "C:\Resource\img\GIF"
    )
)
 


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



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

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

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Народ подскажите пожалуйста как приплюсовывать к названию рандомное число от 1 до 1000 и приплюсовать число 500 как константу которая увеличивается с каждым новым переименованным файлом на 500, Очень нужно переименовать файлы они имеют цифирные названия типа 1,2,3,4....

Всего записей: 24 | Зарегистр. 22-03-2009 | Отправлено: 20:14 05-10-2009
bomzzz



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
%RANDOM% Системная Возвращает произвольное десятичное число от 0 до 32767. Создается командой Cmd.exe  

Цитата:
 
ECHO OFF
COLOR 9F
CLS
ECHO %RANDOM%
pause
 

 
да уж - число очень "псевдо" случайное, наверно лучше подмутить что нибудь как в бейсике или с системным временем или с паузой ожидания. впрочем для твоих целей как раз

Цитата:
 
ECHO OFF
COLOR 9F
CLS
COPY MyFile.txt %RANDOM%.txt
pause
 

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 20:54 05-10-2009 | Исправлено: bomzzz, 21:04 05-10-2009
01MDM



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

Цитата:
Народ подскажите пожалуйста как приплюсовывать к названию рандомное число от 1 до 1000 и приплюсовать число 500 как константу которая увеличивается с каждым новым переименованным файлом на 500, Очень нужно переименовать файлы они имеют цифирные названия типа 1,2,3,4....


Код:
 
@echo off
setlocal enabledelayedexpansion
 
::находим случайное число 1-1000
 
for /l %%i in (1,1,1000) do set "num_!random!=%%i"
for /f "tokens=2 delims==" %%i in ('set num_') do set "num=%%i" && goto:next
 
:next
 
:: переименовываем файлы 1.txt - n.txt
 
for %%i in (*.txt) do (
    ren  "%%i" "!num!%%~xi"
    set /a num+=500
)  
 

 
PS. Математические операции имеют ограничения по максимальному числу (2147483647 если не ошибаюсь).  
PSS. Зачем такое мудреное переименование?  

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 21:14 05-10-2009 | Исправлено: 01MDM, 21:34 05-10-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.Board
© Ru.Board 2000-2020

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru