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

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



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите нарисовать батничек.
Есть родителькая папка содержащая папки типа yyyymmdd, где yyyy - год, mm - месяц, dd - , соответсвенно, день.
Цель скрипта скопировать  директории типа yyyymmdd , попадающих в текущую неделю в  
папку c:\install

Всего записей: 2 | Зарегистр. 20-06-2007 | Отправлено: 17:03 14-10-2008
Elroir



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

Код:
 
@echo off
setlocal
set "ids= "
for /f "tokens=2 delims=#" %%a in (list.txt) do call :prepare "%%a"
for %%a in (%ids%) do rar a "%%aCMB" *%%a*.ans
goto :EOF
:prepare
set "id=%~1"
set "id=%id:~2%"
echo %ids% | find " %id%">nul || set "ids=%ids% %id%"
 


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

Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 17:14 14-10-2008
XXXXL



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте!
Может сможет кто нибудь помочь написать батник, что бы он переводил текстовой документ с кодировки UTF-8 в win1251
Спасибо

Всего записей: 286 | Зарегистр. 16-05-2007 | Отправлено: 19:10 14-10-2008
Integrity

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как можно узнать SID current user?
И есть ли способ считать из файла\реестра что-то в переменную?

Всего записей: 3 | Зарегистр. 06-10-2008 | Отправлено: 20:14 14-10-2008
vitrzn



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

Цитата:
@echo off  
setlocal  
set "ids= "  
for /f "tokens=2 delims=#" %%a in (list.txt) do call repare "%%a"  
for %%a in (%ids%) do rar a "%%aCMB" *%%a*.ans  
goto :EOF  
repare  
set "id=%~1"  
set "id=%id:~2%"  
echo %ids% | find " %id%">nul || set "ids=%ids% %id%"

 
 
Не хочет работать совсем

Всего записей: 1461 | Зарегистр. 28-10-2007 | Отправлено: 21:07 14-10-2008
U235

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
XXXXL
http://gnuwin32.sourceforge.net/packages/libiconv.htm

Код:
iconv.exe -f UTF-8 -t WINDOWS-1251 text_utf-8.txt > text_1251.txt

Всего записей: 881 | Зарегистр. 14-12-2005 | Отправлено: 21:52 14-10-2008
Elroir



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

Цитата:
Не хочет работать совсем  

А подробнее? Что он выдает?
 
Добавлено:
Integrity

Цитата:
Как можно узнать SID current user?

С помощью утилиты psgetsid :

Код:
psgetsid.exe %username% 2>nul | find "S-"

 

Цитата:
И есть ли способ считать из файла\реестра что-то в переменную?

Да есть. Почитай справку по командам "reg" (reg query) и "for" (for /f)

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

Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 00:07 15-10-2008
lipser

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
U235
 
Спасибо, но этого недостаточно. как запускать команду не из самой папки с подпапками, а из другой ?
Сейчас написал строку таким образом:
for /d %%i in (Z:\homes\*) do rar.exe a x:\Backups\%%i %%i  
 
После запуска получаю следующее:
Z:\Cmd\Backups>rar.exe a x:\Backups\Z:\homes\user Z:\homes\user
Cannot create x:\Backups\Z:\homes\user.rar
 
Понимаю, что он подставляет все что в скобках (Z:\homes\*) в имя конечного архива, а есть метод от этого избавиться ?

Всего записей: 179 | Зарегистр. 05-02-2003 | Отправлено: 11:37 15-10-2008
U235

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
lipser
В чем проблема? Для этого сначала надо  перейти в  нужную папку.
Первой строчкой в bat запишите:
Код:
cd /d Z:\homes

Дальше так, как я раньше советовал.

Всего записей: 881 | Зарегистр. 14-12-2005 | Отправлено: 13:43 15-10-2008
gryu



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

Цитата:
cd /d Z:\homes  

хм. для перехода в папку, яб использовал pushd (переход в папку) и popd (вернутся обратно)
 

Всего записей: 13019 | Зарегистр. 15-03-2006 | Отправлено: 15:01 15-10-2008
vitrzn



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

Цитата:
@echo off  
setlocal  
set "ids= "  
for /f "tokens=2 delims=#" %%a in (list.txt) do call repare "%%a"  
for %%a in (%ids%) do rar a "%%aCMB" *%%a*.ans  
goto :EOF  
repare  
set "id=%~1"  
set "id=%id:~2%"  
echo %ids% | find " %id%">nul || set "ids=%ids% %id%"  
 

 
Да в том то и дело - ЧТО ВООБЩЕ НИЧЕГО !!!
Скопировал в батник, удалил лишние пробелы, удалил @echo off (ну чтобы видно было что и как), для начала в конце добавил PAUSE (ЧТОБЫ было видно если ошибки или что ещё)
Запускаю, а батник запускается и тут-же закрывается (и это при PAUSE , когда он вроде должен остановиться в конце ?!! )
Убрал PAUSE , вернул @echo off - то же самое !  
 
Может проблема в том что там два "#" в названии файла ?

Всего записей: 1461 | Зарегистр. 28-10-2007 | Отправлено: 16:33 15-10-2008 | Исправлено: vitrzn, 16:36 15-10-2008
Elroir



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vitrzn
Как называется батник? Лежит ли файл list.txt со списком файлов в той же директории, из которой запускается батник?

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

Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 18:40 15-10-2008
vitrzn



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Elroir
а что должно быть написано в list.txt ?
назв архивов или список обрабатываемых файлов?
 
название батника 1.bat и list.txt лежит (но он пустой, потому как не ведал что туда писать)

Всего записей: 1461 | Зарегистр. 28-10-2007 | Отправлено: 20:47 15-10-2008
olezi

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
 При включении компьютера учитывание 6-сек. погрешности (бегут) в сутки.

Всего записей: 33 | Зарегистр. 07-04-2006 | Отправлено: 21:35 15-10-2008
Elroir



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

Цитата:
Elroir  
а что должно быть написано в list.txt ?  
назв архивов или список обрабатываемых файлов?  
list.txt лежит (но он пустой, потому как не ведал что туда писать)

Ты же сам писал :

Цитата:
 
Есть список файлов  
CMB#DD0910#0000.ANS  
CMB#DD0910#0001.ANS  
...
...
 

Вот этот список и должен быть в list.txt
Я могу изменить батник, чтобы список составлялся из файлов в самой директории. Сделать?


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

Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 21:50 15-10-2008
rBBWYwg



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите, пожалуйста, составить батничек.
Есть образец файла example.nnn (не важно - что в нем написано).
Есть файл list.txt , в котором записан например такой список:
---
1
2
2.3
3.4.5
zero
end.point
---
задача батника - сделать копии файла example.txt, переименованные согласно списка в list.txt (в том же количестве и с соблюдением всех возможных знаков в имени, кроме пробелов). То есть, должны получиться копии с именами:
---
1.nnn
2.nnn
2.3.nnn
3.4.5.nnn
zero.nnn
end.point.nnn
---

Всего записей: 23 | Зарегистр. 14-10-2008 | Отправлено: 21:54 15-10-2008
vitrzn



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Elroir
 
ну задача какая?
нужно сжать все файлы из этой папки  
CMB#DD0910#0000.ANS
CMB#DD0910#0001.ANS
CMB#DD0910#0002.ANS
CMB#DD0917#0000.ANS
CMB#DD0917#0001.ANS
CMB#DD0917#0002.ANS
CMB#DD0924#0000.ANS
CMB#DD0924#0001.ANS
CMB#DD0924#0002.ANS
, так чтобы  получилось
CMB#DD0910#0000.ANS, CMB#DD0910#0001.ANS, CMB#DD0910#0002.ANS в архив 0910CMB.rar
CMB#DD0917#0000.ANS,CMB#DD0917#0001.ANS,CMB#DD0917#0002.ANS в архив 0917CMB.rar
CMB#DD0924#0000.ANS,CMB#DD0924#0001.ANS,CMB#DD0924#0002.ANS в архив 0924CMB.rar
 
и список этих файлов меняется постоянно (т.е. вместо CMB#DD0910#0000.ANS может быть DOCS#DD1014#0000.ANS, или др. название файла)
т.е. в идеале надо будет сделать так чтобы батник отбирал файлы по маске и сжимал в rar
А маска --  *(название)#DD*(дата)#*(номер).ans  сжать в архив *(дата)*(название).rar
 
 
p.s. я так полагаю, что можно сначала скинуть весь список файлов (которые в папке) в файл list.txt , а потом уже обрабатывать его.
Или можно задать такую переменную, которая будет сортировать по маске и сжимать?
 
 

Всего записей: 1461 | Зарегистр. 28-10-2007 | Отправлено: 22:07 15-10-2008 | Исправлено: vitrzn, 22:11 15-10-2008
Elroir



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

Код:
 
@echo off
for /f "tokens=*" %%a in (list.txt) do copy /y example.nnn "%%a.nnn">nul
 

 
olezi

Цитата:
При включении компьютера учитывание 6-сек. погрешности (бегут) в сутки.

Это, конечно, очень лаконично, но совершенно непонятно.

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

Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 22:11 15-10-2008
olezi

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
 При включении компьютера учитывание 6-сек. погрешности системного времени.

Всего записей: 33 | Зарегистр. 07-04-2006 | Отправлено: 22:57 15-10-2008
Elroir



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

Код:
 
@echo off
setlocal
set "ids= "
for /f "tokens=1,2 delims=#" %%a in ('dir /b *#DD*#*.ans') do call :prepare "%%a" "%%b"
for %%a in (%ids%) do call :archive "%%a"
goto :EOF
:prepare
set "id=%~2"
set "id=%id:~2%_%~1"
echo %ids% | find " %id%">nul || set "ids=%ids% %id%"
goto :EOF
:archive
for /f "tokens=1,2 delims=_" %%i in (%1) do rar a "%%i%%j" %%j#DD%%i#*.ans
 

Запускать в директории с файлами.
 
olezi
Тебе сюда. Телепаты там.

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

Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 00:46 16-10-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