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

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



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
igor_andreev
Что то нифига не вышло...
Наверное прийдется писать консольное приложение под свои нужды в Дельфи.

Всего записей: 267 | Зарегистр. 18-09-2006 | Отправлено: 16:03 10-07-2008
igor_andreev

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

Цитата:
Что то нифига не вышло...

Что конкретно не вышло? Я уж лет 7 наверно таким макаром конвертирую книжки в *.txt. Накачаю вечно в одну папку с разных сайтов и фтп *.txt в разной кодировке и потом все в win перегоняю.
vmix

Цитата:
IMHO, xcode  не верно транслирует символ "номер" №  

Есть такое, но мне не очень критично Иногда помогает принудительная вставка в комстроку входящей кодировки, не автоопределение.

Всего записей: 1672 | Зарегистр. 08-12-2004 | Отправлено: 16:12 10-07-2008
Kilich



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
igor_andreev
Подкить исходник батничка вместе с комстрокой ...
и каким именно xcode ты пользуешься ...?
на сайте есть и дос и Вин ...

Всего записей: 267 | Зарегистр. 18-09-2006 | Отправлено: 16:51 10-07-2008
igor_andreev

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Kilich
А какой там исходничек? То же самое, что в комстроке, только знаки процента удвоить.

Код:

@echo off
pushd d:\folder_with_txt
for %%a in (*.txt) do xcode -w "%%a" "%%a"  

xcode нужна та, что в архиве http://rusf.ru/books/yo/bin/xcodewin.zip

Всего записей: 1672 | Зарегистр. 08-12-2004 | Отправлено: 17:04 10-07-2008
knyshow2

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

Всего записей: 273 | Зарегистр. 02-09-2004 | Отправлено: 01:36 13-07-2008
Kilich



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
knyshow2
rasdial /d
 
Добавлено:
igor_andreev
Спасибо! - помогло...
Видимо я пробовал не на вин а на дос xcode

Всего записей: 267 | Зарегистр. 18-09-2006 | Отправлено: 02:00 13-07-2008
iamantbk

Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Как сделать следующее:
 
протестировать архив rar, и, если он нормальный, то распаковать, иначе - остановиться и сообщить об этом.

Всего записей: 61 | Зарегистр. 30-04-2008 | Отправлено: 09:38 14-07-2008
kiara2

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Непонятки какие то, после запуска пишет в лог
Looking for files...
и вылетает безо всяких предупреждений...
 
от чего такое может быть?
 

Код:
 
set OUTPUT=logfile.log
set folderclear1=c:\tmp\cd1\
set folderclear2=c:\tmp\cd2\
set text1clear=c:\tmp\cd1\text1.txt
set text2clear=c:\tmp\cd2\text2.txt
set isodisk1=c:\tmp\cd1.iso
set isodisk2=c:\tmp\cd2.iso
set text3txt=c:\tmp\text3.txt
set passtext3=c:\tmp\passtext3.txt
set passfile1=c:\tmp\pass.txt
rem  Сетевая папка.
set netdisk=\\ekf.int\ekf\Secur
rem Файлы на сетевом диске.
set netpass=Y:\TMF\pass.txt
set netpasstext3=Y:\TMF\passtext3.txt
set text1copy=Y:\TMF\text1.txt
set text2copy=Y:\TMF\text2.txt
set text3copy=Y:\TMF\text3.txt
 
 
 
Title Looking for files...
color 0C
echo. >>%OUTPUT%
echo. >>%OUTPUT%
echo. >>%OUTPUT%
echo  ------------------------------------------------------------------>>%OUTPUT%
echo                     Process start %DATE% %TIME% >>%OUTPUT%.
echo  ------------------------------------------------------------------>>%OUTPUT%
echo %TIME% Looking for files...
echo Looking for files...>>%OUTPUT%
 
 
rem Удаляем все файло перед началом.
For %%a IN ("c:\tmp\pass.txt") do (
if exist %%a (
    echo File %%a exist!>>%OUTPUT%
    echo %TIME% Deleting file %%a>>%OUTPUT%
    echo.>>%OUTPUT%
    del /q %%a
) else (
    echo %TIME% File %%a not exist >>%OUTPUT%
)
 
rem  Очищаем папки для записи все
del /q %folderclear1%*.*
del /q %folderclear2%*.*
 
Title Preparing to copy files...
color 0C
echo Preparing to copy files...
 
echo Mounting network disks...
echo Mounting network disk with files >>%OUTPUT%
net use y: %netdisk%
 
if errorlevel 2 goto itis
if errorlevel 0 goto gotit
 
:itis
echo The local device name is already in use. >>%OUTPUT%
echo. >>%OUTPUT%
echo. >>%OUTPUT%
goto outo
:gotit
echo Mounting network disk Success! >>%OUTPUT%
echo. >>%OUTPUT%
goto outo
 
uto
cls.
 
rem Стартуем SQLEXPRESS
 
Title Starting SQL
echo Starting SQLEXPRESS
 
 
echo. >>%OUTPUT%
echo %TIME% Starting SQLEXPRESS Service!>>%OUTPUT%
 
net start "SQL Server (SQLEXPRESS)"
 
if errorlevel 0 (
    echo %TIME% SQLEXPRESS Service Started!
    echo %TIME% SQLEXPRESS Service Started! >>%OUTPUT%
    echo. >>%OUTPUT%
) else (
    echo %TIME% SQLEXPRESS Service Start failed! >>%OUTPUT%
    echo. >>%OUTPUT%
    echo %TIME% SQLEXPRESS Service Start failed!
    pause.
)
cls.
rem Копируем себе файлы с контейнерами.
 
echo %TIME% Start Prepare files for recording....>>%OUTPUT%
echo. >>%OUTPUT%
echo %TIME% Search for existing files in Directory...>>%OUTPUT%
echo.>>%OUTPUT%
 
title Prep files for record
echo  %TIME% Prep files for record
 
cls.
title Copying text files
echo Copy Crypto containers to local host..... >>%OUTPUT%
echo %TIME% Copying text1.txt....>>%OUTPUT%
echo %TIME% Copying text1.txt....
 
xcopy %text1copy% %folderclear1% /Y
 
if errorlevel 4 goto lowmemory
if errorlevel 2 goto abort
if errorlevel 1 goto err
if errorlevel 0 goto good
 
:lowmemory  
echo Insufficient memory to copy files or >>%OUTPUT%
echo Insufficient memory to copy files or
echo invalid drive or command-line syntax. >>%OUTPUT%
echo invalid drive or command-line syntax.
pause.
goto out
 
:abort  
echo You pressed CTRL+C to end the copy operation. >>%OUTPUT%
echo You pressed CTRL+C to end the copy operation.
pause.
goto out  
 
:err
echo Files for copying are not found.>>%OUTPUT%
echo Files for copying are not found.
echo.>>%OUTPUT%
pause.
goto out
 
 
:good
echo.>>%OUTPUT%
echo %TIME% File text1.txt copied success ! >>%OUTPUT%
echo.>>%OUTPUT%
echo %TIME% File text1.txt copied success !
goto out
 
ut
if errorlevel 4 exit.
if errorlevel 2 exit.
if errorlevel 1 exit.
rem _____________________________________________________
rem ======================================================
rem _____________________________________________________
echo.>>%OUTPUT%
echo %TIME% >>%OUTPUT%
echo %TIME% Copying text2.txt....>>%OUTPUT%
echo %TIME% Copying text2.txt....
xcopy %text2copy% %folderclear2% /Y
 
if errorlevel 4 goto lowmemory1
if errorlevel 2 goto abort1
if errorlevel 1 goto err1
if errorlevel 0 goto good1
 
:lowmemory1  
echo Insufficient memory to copy files or >>%OUTPUT%
echo Insufficient memory to copy files or
echo invalid drive or command-line syntax. >>%OUTPUT%
echo invalid drive or command-line syntax.
pause.
goto exit1
 
:abort1
echo You pressed CTRL+C to end the copy operation. >>%OUTPUT%
echo You pressed CTRL+C to end the copy operation.
pause.
goto exit1
 
:err1
echo Files for copying are not found.>>%OUTPUT%
echo Files for copying are not found.
echo.>>%OUTPUT%
pause.
goto exit1
 
:good1
echo.>>%OUTPUT%
echo %TIME% File text2.txt copied success ! >>%OUTPUT%
echo %TIME% File text2.txt copied success !
echo.>>%OUTPUT%
goto exit1
 
:exit1
if errorlevel 4 exit.
if errorlevel 2 exit.
if errorlevel 1 exit.
 
 
 
rem Удаляем сетевой диск.
echo.>>%OUTPUT%
 
echo %TIME% Unmounting network disk with files >>%OUTPUT%
echo %TIME% Unmounting network disk with files
net use y: /delete /Y
 
 
if errorlevel 0 (
    echo %TIME% Unmounting network disk with files Success! >>%OUTPUT%
    echo %TIME% Unmounting network disk with files Success!
) else (
    echo %TIME% Unmounting network disk with files Failed! >>%OUTPUT%
    echo %TIME% Unmounting network disk with files Failed!
)
echo.>>%OUTPUT%
 
 
rem Создаем образы для записи
title Creating iso
echo %TIME% Creating Image files...
echo %TIME% Creating Image files...>>%OUTPUT%
cdimage.exe -lnew -n -w4 %folderclear1% %isodisk1% >>%OUTPUT%
cdimage.exe -lnew -n -w4 %folderclear1% %isodisk2% >>%OUTPUT%
echo Files Created Success!...
 
 
rem запысываем диски
echo %TIME% Recording Disks1...>>%OUTPUT%
echo %TIME% Recording Disks1...
cdburn d: %isodisk1%
echo %TIME% Recording Disks2...>>%OUTPUT%
echo %TIME% Recording Disks2...
cdburn f: %isodisk2%
 
rem Тут начинается работа уже с записанными дисками по сбору самой базы.
rem Можно вынести эту часть скрипта в отдельный скрипт и запускать отдельно.
 
 
rem монтируем трукриптом.
 
echo %TIME% Mounting Virtual discs...
echo %TIME% Mounting Virtual discs...>>%OUTPUT%
title Mounting Virtual discs...
c:\truecrypt\truecrypt.exe /v d:\text1.txt /lu /q /k %passfile1%
echo Disk - U: mounted...
c:\truecrypt\truecrypt.exe /v f:\text2.txt /lv /q /k %passfile1%
echo Disk - V: mounted...
c:\truecrypt\truecrypt.exe /v %text3txt% /ls /q /k %passtext3%
echo Disk - S: mounted...
rem c:\truecrypt\truecrypt.exe /v g:\text3.txt /ls /q /k c:\tmp\passtext3.txt
 
rem Монтируем базу.
 
title Working with Database...
color 0C
Echo %TIME% Starting DBO Script....
Echo %TIME% Starting DBO Script....>>%OUTPUT%
echo. >>%OUTPUT%
start /wait mountdb.cmd
 
Echo %TIME% Starting Access....
Echo %TIME% Starting Access....>>%OUTPUT%
echo. >>%OUTPUT%
start /wait "c:\Program Files\Microsoft Office\Office12\"MSACCESS.EXE c:\TrueCrypt\scripts\FactoringSec.mdb
 
 
Echo %TIME% Start Deleting DBO....
Echo %TIME% Start Deleting DBO....>>%OUTPUT%
echo. >>%OUTPUT%
title Deleting DBO
 
 
start /wait dropdb.cmd
 
 
Echo %TIME%Dismounting Virtual Discs...>>%OUTPUT%
echo. >>%OUTPUT%
Echo %TIME% Dismounting Virtual Discs...
c:\truecrypt\truecrypt.exe  /du /q
c:\truecrypt\truecrypt.exe  /dv /q
c:\truecrypt\truecrypt.exe  /ds /q
 
 
echo %TIME% Stopping SQLEXPRESS >>%OUTPUT%
echo. >>%OUTPUT%
echo %TIME% Stopping SQLEXPRESS
rem Тормозим службу SQLEXPRESS
 
echo. >>%OUTPUT%
echo %TIME% >>%OUTPUT%
echo %TIME% Stoping  SQLEXPRESS Service! >>%OUTPUT%
net stop "SQL Server (SQLEXPRESS)"
 
if errorlevel 0 (
echo %TIME% SQLEXPRESS Stop Success! >>%OUTPUT%
echo %TIME% SQLEXPRESS Stop Success!
echo. >>%OUTPUT%
) else (
     echo %TIME% SQLEXPRESS Service Stop failed! >>%OUTPUT%
    echo %TIME% SQLEXPRESS Service Stop failed!
    echo. >>%OUTPUT%
    pause.
)
 

Всего записей: 48 | Зарегистр. 15-07-2008 | Отправлено: 14:56 16-07-2008
igor_andreev

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

Цитата:
от чего такое может быть?
Это ребус такой - найди незакрытую скобку. Я нашел на восьмой секунде, а ты?

Всего записей: 1672 | Зарегистр. 08-12-2004 | Отправлено: 16:26 16-07-2008
kiara2

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
[q][/q]
Извиняюсь за свою невнимательность.
 
Я к сожалению нашел незакрытую кнопку только после пинка...

Всего записей: 48 | Зарегистр. 15-07-2008 | Отправлено: 17:30 16-07-2008
Kilich



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
И у меня вопрос:
Можно ли только средствами ОС при помощи батника отправить письмо с вложением + с указанием (если это возможно) кодировки. Не прибегая к утилитам?

Всего записей: 267 | Зарегистр. 18-09-2006 | Отправлено: 12:40 17-07-2008
gryu



дикий гусь
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Kilich
Нет. В любом случае нужен почтовый клиент поддерживающий MAPI.  
Чем иначе почту то оправлять?  
 
Добавлено:
А вот  

Цитата:
письмо с вложением + с указанием ... кодировки.
Можно.  

Всего записей: 12952 | Зарегистр. 15-03-2006 | Отправлено: 12:47 17-07-2008 | Исправлено: gryu, 12:49 17-07-2008
kiara2

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
повозился я с этими батниками, решил что трудно их дебагить, когда для этого средства нету, да и логика мне непонятна:
 
1.  Ощущение что функция в независимости от того где она в скрипте будит, в начале или в конце, выполняется. Т.е. в данном случае после цикла, функция все равно выполняется. в независимости вызывали ее потом или нет.
2. Непонятки со временем:

Код:
 
>14:54:23,70 Copying pass.txt....
14:54:23,80 File copied success !  
>14:54:23,70 Copying passtext3.txt....
14:54:23,89 File copied success !  
>14:54:23,70 Copying text1.txt....
14:54:23,95 File copied success !  
>14:54:23,70 Copying text2.txt....
14:54:24,03 File copied success !  
>14:54:23,70 Copying text3.txt....
 
14:54:24,09 File copied success !  
14:54:24,09 File copied success !  
 

Объясните мне почему время такое странное? т.е. ощущение что оно просто замерзает.
 
3. Почему то в конце выводится дважды. Хотя тут ясно почему, но тогда не вижу смысла? Тогда функция не есть функция, роль подпрограмы не выполняется.
 
4. Ну и что больше всего меня беспокоит. так это то что exit /b в "подпрограмме" ведет к тому что как только скрипт выходит из цикла доходит до "подпрограммы" и доходит до этой строчки, он мило выходит.

Код:
 
@echo off
set OUTPUT=logfile.log
rem прописываем путь к файлу text1.txt который находится на CD-ROM
set cdtext1=d:\text1.txt
rem прописываем путь к файлу text1.txt который находится на CD-ROM
set cdtext2=f:\text2.txt
 
set mainfolder=c:\tmp\
set folderclear1=%mainfolder%cd1\
set folderclear2=%mainfolder%cd2\
set text1clear=%mainfolder%cd1\text1.txt
set text2clear=%mainfolder%cd2\text2.txt
set isodisk1=%mainfolder%cd1.iso
set isodisk2=%mainfolder%cd2.iso
set text3txt=%mainfolder%text3.txt
set passtext3=%mainfolder%passtext3.txt
set passfile1=%mainfolder%pass.txt
rem  Сетевая папка.
set netdisk=\\ttk.int\ttk\Sr\F
rem Файлы на сетевом диске.
set netpass=Y:\pass.txt
set netpasstext3=Y:\passtext3.txt
set text1copy=Y:\text1.txt
set text2copy=Y:\text2.txt
set text3copy=Y:\text3.txt
 
title Copying text files
echo Copy Crypto containers to local host..... >>%OUTPUT%
 
for %%n IN (%netpass% %netpasstext3% %text1copy% %text2copy% %text3copy%) DO (
 
    if %%n==%netpass% (
        echo %TIME% Copying pass.txt....>>%OUTPUT%
        echo %TIME% Copying pass.txt....
        xcopy %%n %mainfolder% /Y >nul
        set err=%ERRORLEVEL%
        call :constant %err%
    )
    if %%n==%netpasstext3% (
        echo %TIME% Copying passtext3.txt....>>%OUTPUT%
        echo %TIME% Copying passtext3.txt....
        xcopy %%n %mainfolder% /Y >nul
        set err=%ERRORLEVEL%
        call :constant %err%
    )
    if %%n==%text1copy% (
        echo %TIME% Copying text1.txt....>>%OUTPUT%
        echo %TIME% Copying text1.txt....
        xcopy %%n %folderclear1% /Y >nul
        set err=%ERRORLEVEL%
        call :constant %err%
    )
    if %%n==%text2copy% (
        echo %TIME% Copying text2.txt....>>%OUTPUT%
        echo %TIME% Copying text2.txt....
        xcopy %%n %folderclear2% /Y >nul
        set err=%ERRORLEVEL%
        call :constant %err%
    )
    if %%n==%text3copy% (
        echo %TIME% Copying text3.txt....>>%OUTPUT%
        echo %TIME% Copying text3.txt....
        xcopy %%n %mainfolder% /Y >nul
        set err=%ERRORLEVEL%
        call :constant %err%
    )
 
)
 
rem  Sub program
:constant
    if %err%==4 (
        echo Insufficient memory to copy files or >>%OUTPUT%
        echo Insufficient memory to copy files or
        echo invalid drive or command-line syntax. >>%OUTPUT%
        echo invalid drive or command-line syntax.
        pause.
        exit.
    )
    if %err%==2 (
        echo You pressed CTRL+C to end the copy operation. >>%OUTPUT%
        echo You pressed CTRL+C to end the copy operation.
        pause.
        exit.  
    )
    if %err%==1 (
        echo Files for copying are not found.>>%OUTPUT%
        echo Files for copying are not found.
        echo.>>%OUTPUT%
        pause.
        exit.
    )
    if %err%==0 (
    echo.>>%OUTPUT%
    echo %TIME% File copied success ! >>%OUTPUT%
    echo.>>%OUTPUT%
    echo %TIME% File copied success !
    exit /b
    )
 

Всего записей: 48 | Зарегистр. 15-07-2008 | Отправлено: 15:05 17-07-2008
igor_andreev

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

Цитата:
трудно их дебагить, когда для этого средства нету,

rem перед @echo off и где только можно pause напихай, вот и будешь видеть, в каком месте батник "спотыкается"

Цитата:
логика мне непонятна:

Простая, как три копейки - команды выполняются по очереди, сверху-вниз

Цитата:
Т.е. в данном случае после цикла, функция все равно выполняется. в независимости вызывали ее потом или нет.  

Естественно, после цикла надо вставить GOTO :EOF

Цитата:
Объясните мне почему время такое странное? т.е. ощущение что оно просто замерзает.  

Что странного, нормальное время.

Цитата:
exit /b в "подпрограмме" ведет к тому что как только скрипт выходит из цикла доходит до "подпрограммы" и доходит до этой строчки, он мило выходит.

А что он должен делать? "exit" в переводе с английского и есть "выход". Может тоже goto :eof написать, вместо выход?
 
Kilich

Цитата:
Можно ли только средствами ОС при помощи батника отправить письмо с вложением + с указанием (если это возможно) кодировки. Не прибегая к утилитам?  

Vbscript-ом можно. На 2000 и выше есть cdosys.dll для этого. В гугле набери CreateObject("CDO.Message") - найдешь примеры.

Всего записей: 1672 | Зарегистр. 08-12-2004 | Отправлено: 15:36 17-07-2008
Kilich



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
igor_andreev
Спасибо за наводку , начал ковырять...надеюсь получится...
 
А если потребуется запуск на ОС-98 есть какието наблюдения по этому поводу?

Всего записей: 267 | Зарегистр. 18-09-2006 | Отправлено: 16:01 17-07-2008
gryu



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

Цитата:
Можно ли только средствами ОС при помощи батника отправить письмо с вложением + с указанием (если это возможно) кодировки. Не прибегая к утилитам?  
 
Vbscript-ом можно. На 2000 и выше есть cdosys.dll для этого. В гугле набери CreateObject("CDO.Message") - найдешь примеры.  

О как! Спасибо. Тоже знать буду.

Всего записей: 12952 | Зарегистр. 15-03-2006 | Отправлено: 16:49 17-07-2008
Svjt



Newbie
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Доброе время суток всем...  
Если позволите сразу к просьбе: задача такова, есть папка которую надо записать на диски (иногда CD иногда DVD). Сколько не копался не нашёл иного способа нежели создать многотомный архив (от 40 до 300 томов по 100 метров), его разбить на папки по 7 или 45 файлов (в зависимости от носителя), и из этих папок сделать образы...  
На данный момент архив из папки создаётся, папки под диски создаются в нужном количестве, а дальше я завис, уже сутки сижу не знаю как сделать сортировку файлов по папкам... Винрар обзывает многотомники примерно так *.part01.rar, *.part02.rar, *.part03.rar, в случае если файлов меньше 85, и *.part001.rar *.part002.rar *.part003.rar, если файлов больше 85...  
Вполне возможно я сумбурно объяснил, что именно хочу, но постараюсь объяснить если не будут вопросы...  
 
Вот то, до чего я додумался пока:  
 
 
Скрипт упаковки:

Код:
set CurData=D:\temp\bat\test
start winrar m -m0 -r -ep1 -sfx -t -v11,8 %CurData%\%1 %CurData%\test.exe
date /t
time /t

 
 
Скрипт сортировки по папкам:

Код:
set DIR=d:\temp\bat\test
set CDPATH=0
set ARPATH=1
 
REM Определение количества архивов
Set Cnt=0
For %%I In (pack*.*) Do Set /A Cnt += 1
Echo %Cnt%
 
REM Определение количества необходимых образов
set disk=%Cnt%
set /a disk/=7
set /a diskT=disk*7
if %Cnt%==%diskT% goto start_mkdir
set /a disk += 1
 
REM Создание папок под диски
:start_mkdir
Echo %disk%
if %CDPATH%==%disk% goto end_mkdir
set /a CDPATH += 1
MKDIR %DIR%\cd-%CDPATH%
goto start_mkdir
:end_mkdir

 
 
В батниках без году неделя, но очень не хочется делать это в ручную... Могет кого-то заинтересует этот вопрос и мне помогут...

Всего записей: 17 | Зарегистр. 03-03-2008 | Отправлено: 12:52 18-07-2008 | Исправлено: Svjt, 12:58 18-07-2008
gryu



дикий гусь
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Svjt
Вообще говоря, я думаю,что ты изначально не правильно подошёл к решению вопроса.
Зачем ты бьёшь на архивы по 100 мег?
По запуску батника сделай выбор CD/DVD и пакуй сразу или по 700 мег или по 2.2 гига. (сразу 4.5гиг не советую. Ограничение файловой системы. ;-) )

Цитата:
 
:up
echo    [1] Паковка под CD-Rom
echo.
echo    [2] Паковка под DVD-Rom
echo.
echo    [3] Записать на диск
echo.
echo    [n] Выход
echo.
 
set /p tsk="To continue? : "
echo.
if not defined tsk goto:eof
if %tsk%==1 goto:CD
if %tsk%==2 goto:DVD
if %tsk%==3 goto:REC
if %tsk%==n goto:end
goto:up
 
rem я саму строку паковки не менял. тома подправишь
:CD
set CurData=D:\temp\bat\test\CD  
start winrar m -m0 -r -ep1 -sfx -t -v11,8 %CurData%\%1 %CurData%\test.exe  
date /t  
time /t  
goto:up
 
rem я саму строку паковки не менял. тома подправишь
:DVD  
set CurData=D:\temp\bat\test\DVD\
start winrar m -m0 -r -ep1 -sfx -t -v11,8 %CurData%\%1 %CurData%\test.exe  
date /t
time /t  
goto:up
 
rem А тут командная строка на запись.  
rem Сам понимаешь, зависит от утилиты записи
rem поэтому ничего не пишу
:REC  
 
 
goto:up
 
:end
exit
 
 

 
 
Добавлено:
Вот тут ещё одна идея появилась.  
Есть консольная версия NERO и (есть ещё пакет NeroSDK.)
Она фришная.  
Поддерживает туеву хучу ключей командной строки.  
Т.е. переложить на саму программу записи функцию разбиения на диски.

Всего записей: 12952 | Зарегистр. 15-03-2006 | Отправлено: 13:16 18-07-2008 | Исправлено: gryu, 13:34 18-07-2008
Svjt



Newbie
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
gryu спасибо за вариант, но мне надо чтоб скрипт работал без меня (ночью всё это делается). А по 100 метров нада по технологии (требования сверху).  
 
Могет есть ключи какие-то у винрара, чтоб он паковал по 7 файлов в папку кидал, а потом создавал следующую папку и опять 7 файлов...
 
 
Вроде нащупал решение, но встала проблема с именем файла, который нада перемещать в папку... Винрар именует архивы *.part001.rar (если архивов больше 85) соответственно строка move %DIR%\*%ARPATH%.rar %DIR%\cd-%CDPATH%\ где ARPATH - номер этого архива отрабатывает таким образом, что все файлы номера которого заканчиваются на ARPATH попадают в указанную папку, соответственно в первой папке будут лежать архивы и 001 и 011 и 021... Могет кто подскажет, как это обойти?

Всего записей: 17 | Зарегистр. 03-03-2008 | Отправлено: 14:16 18-07-2008 | Исправлено: Svjt, 14:34 18-07-2008
gryu



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

Цитата:
но мне надо чтоб скрипт работал без меня (ночью всё это делается).  

А как же замена болванок в приводе? Или у тебя всегда меньше чем на одну болванку? Тогда чего делить... что то я тебя не понял.  
 
 

Всего записей: 12952 | Зарегистр. 15-03-2006 | Отправлено: 14:27 18-07-2008 | Исправлено: gryu, 14:30 18-07-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.Board
© Ru.Board 2000-2020

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru

Рейтинг.ru