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

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

Модерирует : KLASS, IFkO

vu1tur (27-04-2007 11:55): продолжаем в теме «Задачи на bat-файлах 3»  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

vu1tur



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

 
Важно: копируя батник через буфер обмена из форума не забывайте удалять пробелы в конце каждой строки, т.к. в некоторых случаях из-за этого программа будет работать неправильно!!!
 
Дополняем шапку: добавляем готовые решения, полезные ссылки.
 
Примечание: Большие куски кода заключайте в тэг [more]  
 
Смежные темы:
В помощь системному администратору » Автоматизация администрирования
Программы » Командная строка, батники\сценарии
 
Полезные ссылки
 
Полезные утилиты
 
Готовые решения и частые вопросы:
  • Встроенный справочник по командам
  • Создание помощи по всем командам консоли 2000 и XP
  • Альтернативные решения »
  • Работа с текстом, датой, и файлами »
  • Администрирование, автоматизация и сеть »
  • Работа с переменными и параметрами ком. строки »
     
    Описания работы команд и символов участниками темы:
    · setlocal enabledelayedexpansion и переменные окружения
    · символы & и && в командной строке
    · Переменная %0
     
    Невозможности — что нельзя сделать с помощью командных файлов:
    · изменть конфигурацию IP на удаленной машине (без помощи rcmd.exe) [добавил ALEF]
     
    Старая версия первого сообщения

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 16:59 14-11-2006 | Исправлено: Elroir, 04:30 26-04-2007
    igor_andreev

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

    Цитата:
    средствами виндоус (хотябы XP) скачать файл с сети (http и ftp хотябы)?  

    Vbscript-ом можно и с http и с ftp
    З.Ы. Но не рекомендую Для скачивания бинарных данных сторонние проги не зря делают.

    Всего записей: 1667 | Зарегистр. 08-12-2004 | Отправлено: 08:01 09-02-2007 | Исправлено: igor_andreev, 08:04 09-02-2007
    miheenko



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Доброго всем дня. Помогите пожалуйста.
    Есть такая задача. У меня вот такой батник внем все супер, но единственная загвоздка, в следующем, известно все кроме названия начального файла, он лежит по пути d:\bat\***.*** Необходимо определить его название и вставить в батник. Начальный файл в папке один. Т.е. можно при помощи Dir как то.  
     
     
     
    @Echo off  
    del end.txt  
    setlocal enabledelayedexpansion  
    for /F "skip=9 tokens=5,*" %%i in (d:\bat\***.***) do echo %%i | find ""|| echo %%i%%j >> bat1.txt  
    set "count=1"  
    for /f "tokens=*" %%a in (bat1.txt) do (  
    if !count!==1 echo тел;Контролировалось: %%a  
    if !count!==3 echo Отправлено: %%a  
    set /a "count+=1"  
    )>>bat2.txt  
    del bat1.txt  
    set "count=1"  
    for /f "tokens=1-10" %%a in (bat2.txt) do (  
    if !count!==1 (set fpart=%%a%%b%%c%%d) else (set code=%%a%%b%%c%%d)  
    set /a count=!count!+1  
    )  
    if not defined fpart (echo %code%>end.txt) else (echo %fpart%   %code%>>end.txt)  
    del bat2.txt

    Всего записей: 11 | Зарегистр. 29-01-2007 | Отправлено: 08:29 09-02-2007
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Я вот так использую:
    Комстрока перезагрузки
    C:\windows\system32\shutdown.exe  -r -t 00 -f
    Комстрока выключения компа
    C:\windows\system32\shutdown.exe -s -t 00 -f
     
    Интересные вопросы решались последние несколько дней... показ расширения у меня работает, правда глюковато, иногда несрабатывает, или срабатывает по F5, но не во всех папках (жму в каждом окне). Перезапуск эксплорера у меня не срабатывает, только убивается. Скрипт для обновления рабочего стола (не для папок) срабатывает, если и на панели задач сработает, то это для меня главное - обновить для показа панели инструментов.
    Осталось ещё "последняя" проблема - создание папки... неважно где задействуется, строка в bat-файле или в реестре, чтоб потом этому делу назначить горячую клавишу, а то двухярусное контекстное меню утомляет.
    Спасибо за ссылки на справку, также скачал "autoit", конечно зря, потому как для меня это тёмный лес. И хочется упомянуть прогу "InqSoft Sign 0f Misery", там справка на русском языке, лёгкая в понимании, и есть всякие эмуляции клавишных нажатий, с задержкой можно, и классы окон определяет, и компилирует созданный скрипт в *.exe.

    Всего записей: 4176 | Зарегистр. 03-05-2006 | Отправлено: 09:04 09-02-2007
    miheenko



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Всем спасибо. Уменя получилось.
     
     
    @Echo off
    del end.txt
    setlocal enabledelayedexpansion  
    dir /B echo d:\bat\*.* >> d:\bat1\file.txt
    for /f %%s in (d:\bat1\file.txt) do set "text1=!text! %%s"  
    echo %text1:~1%
    for /F "skip=9 tokens=5,*" %%i in (d:\bat\%text1:~1%) do echo %%i | find ""|| echo %%i%%j >> bat1.txt
    set "count=1"  
    for /f "tokens=*" %%a in (d:\bat1\bat1.txt) do (
    if !count!==1 echo Тел.;Љ®-ва®«Ёа®ў «®бм:_%%a
    if !count!==2 echo ЋвЎа Є®ў -®:_%%a
    if !count!==3 echo ЋвЇа ў«Ґ-®:_%%a
    set /a "count+=1"
    )>>d:\bat1\bat2.txt
    del d:\bat1\file.txt
    del d:\bat1\bat1.txt
    for /f %%a in (d:\bat1\bat2.txt) do set "text=!text! %%a"  
    echo %text:~1%>>d:\bat1\end.txt
    del d:\bat1\bat2.txt
     
     

    Всего записей: 11 | Зарегистр. 29-01-2007 | Отправлено: 09:07 09-02-2007
    JohnRD

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

    Код:
    @echo off  
    for %%a in (*.zip) do (  
    md %%~na 2>nul  
    unzip %%a -d %%~na    
    rename %%a %%a_
    )

     
    как можно решить такую вешь
     
    Евгений

    Всего записей: 200 | Зарегистр. 29-08-2004 | Отправлено: 13:42 09-02-2007 | Исправлено: JohnRD, 13:43 09-02-2007
    Elroir



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

    Цитата:
    как можно решить такую вешь

    Наверно так:

    Код:
     
    @echo off  
    for %%a in (*.zip) do if "%%~xa"==".zip" (
    md %%~na 2>nul
    unzip %%a -d %%~na
    rename %%a %%a_
    )
     

     
    AZJIO

    Цитата:
    Перезапуск эксплорера у меня не срабатывает, только убивается.

    То есть десктоп пропадает и не появляется? Или не запускаются те директории, которые были открыты?

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 15:05 09-02-2007
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ещё раз впишу, скопировал с батника...
     

    Цитата:
    @echo off
    chcp 1251>nul
    setlocal enabledelayedexpansion
    for /f "usebackq tokens=8*" %%a in (`"cmdow /t /f | find /i "explorer""`) do (
    if /i "%%a"=="explorer" set "open_windows=!open_windows! "%%b""
    )
    taskkill /f /im explorer.exe>nul
    for %%a in (%open_windows%) do start /min explorer %%a

     
    Вот это запускаю, и панель задач не появляется, то есть експлорер не запустился.
    Да и ещё... у меня тоже после сегодняшних экспериментов все настройки експлорера сбросились по умолчанию (после перезагрузки), но потом обнаружил, что я вошёл в систему как новый пользователь, при чём старый профиль не работает. Удалил оба профиля из под liveCD, и скопировал "оригинал" профиля с образа (папку с моим именем в Documents and Settings), не помогло, пришлось всю винду с образа ставить.

    Всего записей: 4176 | Зарегистр. 03-05-2006 | Отправлено: 17:27 09-02-2007
    JohnRD

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

    Всего записей: 200 | Зарегистр. 29-08-2004 | Отправлено: 17:40 09-02-2007
    ViSiToR



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Вобщем, не нашёл я достойных средств для скачивания и распаковки файлов средствами одной лишь системы, поэтому воспользовался curl и 7z...


    Представляю вашему вниманию батник, которы поможет скачивать файлы с сети с расширение *.7z, *.zip, *.rar, *.tar, и распаковывать их в указанную (при установке) папку с именем самого архива!

     
    Всё очень просто, скачиваем архив Down_and_Extract.zip v1.0 beta 2, распаковываем его куда нибудь, и запускаем пакетны файл (далее батник) “Down_and_Extract.bat”...
     
    Далее программа потребует установить себя в Internet Explorer (далее IE), если будет запущен IE, то программа предложит их закрыть (при отмене интеграции не будет), после согласия на интеграцию (и по необходимости закрытия всех окон IE), будет предложено ввести путь к каталогу, в который будут скачиваться и распаковываться архивы (если путь не существует, и если возможно, то он будет создан), далее поступит вопрос о том, что нужно делать в случае совпадения имён при распаковке, если ответить "Да", то файлы будут заменяться, если нет, то будут переименовываться автоматически (в _1 _2 и т.д. в конце файла).
     
    После установки, в меню которое выпадает по нажатию правой кнопкой мышки на ссылке IE, будет виден пункт с именем "Download and Extract", он и будет служить для закачки и распаковки.
     
    ------------
    Примечания:
    ------------

  • В силу ограниченности утилиты 7z, если требуется скачать архив с расширением *.rar, то в папку с программой будет скачана утилита Rar.exe (269 kb) - с её помощью и будут закачиваться файлы подобного расширения.
     
     
  • Если нужно чтобы по окончанию не выводилось окно о том что закачка и распаковка окончена, нужно в начале батника (перед интеграцией) поменять это:
     

    Код:
    Set Show_MessageAtEnd=1

     
    На это:
     

    Код:
    Set Show_MessageAtEnd=0

     
     
  • По умолчанию, окно батника не показывается (при закачке), чтобы оно отображалось (к примеру, если нужно видеть процесс скачки и распаковки), в батнике нужно найти такую строку (тоже перед интеграцией):
     

    Код:
    Echo D2Ex^.Run "%IEShortPath%\%BatName%.bat " ^& Replace(Link, "&", "%%26"), 0, False>> "%HtmFile%"  

     
    И убрать из неё это:
     

    Код:
    , 0, False

     
    В результате эта строка должна выглядеть так:  
     

    Код:
    Echo D2Ex^.Run "%IEShortPath%\%BatName%.bat " ^& Replace(Link, "&", "%%26")>> "%HtmFile%"

     
    В любом случае, если после интеграции требуется внести изменения в параметры программы, то нужно перейти в каталог "%programfiles%\Internet Explorer\PLUGINS\Down_and_Extract" и открыть файл (в обычном блокноте) "Down_and_Extract.dat" - в первой строке задаётся параметр, который определяет, как будет себя вести программа при совпадении имён файлов...
    Если записать в первой строке так:

    Код:
    /0

    то файлы будут автоматически переименовываться в "имя файла_1.txt", "имя файла_2.txt" и т.д.
    Если вместо 0 поставить там 1, то файлы будут заменяться.
    Во второй строке, задаётся путь к каталогу, в который будут скачиваться, и позже распаковываться файлы - если там указать неверны путь, то будет попытка его создать, если создать путь невозможно, то путь будет считаться такой: "C:\Downloads"
    -------------------------------
     
    -Те кто юзает браузер Opera, тоже может "прикрутить" этот батник, для этого нужно создать файл с расширением *.vbs, назвать его допустим так - “DownEndExtract.vbs” - и записать в него это:
     

    Код:
    Set D2Ex = CreateObject("WScript.Shell")
    Link = external.menuArguments.event.srcElement
    D2Ex.Run "путь\до\батника\Down_and_Extract.bat " & Replace(Link, "&", "%26"), 0, False

     
    Желательно поместить этот скрипт (и сам батник) в каталог с браузером Opera - Всё это для того чтобы батник не показывался, и для того чтобы заменять символ & на его hex-аналог (%26).
    А в сам браузер, в файл профиля меню, под секцию [Link popup Menu] добавить такую строку:
     

    Код:
    Item, "Скачать и распаковать" = Execute program, "путь\до\скрипта\DownAndExtract.vbs", "%l",, "Attachment Archives"

     
    А также нужно будет создать в этой же папке (где и батник) файл "Down_and_Extract.dat", и в первую строку вписать /0 (для того чтобы файлы НЕ заменялись, а переименовывались) или /1 (для того чтобы файлы заменялись), а во вторую строку прописать путь до каталога в который будут закачиваться и распаковываться файлы.
     
    ------------------------------
    И ещё, батник представляет своего рода гибрид между пакетным файлом и vbs скриптами (которые генерируются самим батником), поэтому он сильно зависит от ресурсов системы - тестировано на Windows XP SP2 с IE 6.
     
    P.S
    Батник написал на скорую руку, просто ради интереса (я такую же утилиту написал на AutoIT), в нём возможны (и наверняка будут) многие недочёты и ошибки, поэтому прошу тех кто может - поправить их, а тех кто не может, просто не огорчаться, обязательно доведём его до возможного совершенства! Спасибо!
     
     
    --------------------
    История версии:
    --------------------

     
    [10/02/2007] - 1.0 beta 2
    -Исправлена ошибка при распаковке - если архив содержал файлы в подкаталогах, то они распаковывались в корневую папку без сохранения структуры папок (это вызывалось ключом 'e' у команды запускающей 7z, а нужно через 'x').
    -Исправления в выводах сообщении - иконка MsgBox'а представляла вопрос, хотя вопроса не было
    -Исправлена ошибка при распознавании поддерживаемых форматов архива (для *.7z проверялось 4 последних символа, хотя нужно 3 ).
    -Улучшен метод интеграции - теперь программа определяет запущены/е процесс/ы Internet Explorer, и по необходимости (после подтверждения) закрывает его/их.
    -Теперь при закачке и распаковке приложение IE не блокируется - за это благодарим igor_andreev
    *Прямые пути (в основном C:\program files) были заменены переменными окружения, а в нужных местах эти переменные записываются в укороченном виде (за это спасибо доброму и отзывчивому модератору этого топика - evle ).
    *Теперь всегда временные файлы (*.vbs) по окончанию закачки и распаковки будут удаляться (до сих пор при некоторых условиях оставался файл vbs во временной папке %temp%).
    *В силу ограниченности утилиты 7z, для закачки архивов с форматом *.rar будет автоматом однократно скачана утилита Rar.exe.
    +Добавлено ещё одно поддерживаемое расширение *.tar - оказывается 7z и его нормально распаковывает.
    +При переименовании файлов также учитывается закачиваемы архив и каталог в который будет произведена распаковка.
    +По окончанию интеграции запускается Internet Explorer
    +Добавлен файл Readme.txt - при первом запуске (вместе с интеграцией) файл запускается в блокноте.
     
    [09/02/2007] - 1.0 beta 1
    Создана программа Down_and_Extract.bat


    ----------
    ViSiToR a.k.a CreatoR
    CreatoR это не ник, CreatoR это стиль жизни!

  • Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 19:16 09-02-2007 | Исправлено: ViSiToR, 14:10 10-02-2007
    igor_andreev

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

    Цитата:
    просто напросто это блокирует окно Internet Explorer на момент скачки и распаковки, как это обойти я не имею понятия, и почему это происходит тоже (кто знает прошу рассказать)

     
    В принципе, даже не скачав архива(мне в общем то не надо, у меня такое есть на чистом vbscript+wget) могу сказать, что  в *.Run,*, 0, True - последняя True значит - дожидаться окончания работы приложения, поэтому наверно и блокирует. Попробуй сделай False.

    Всего записей: 1667 | Зарегистр. 08-12-2004 | Отправлено: 19:56 09-02-2007 | Исправлено: igor_andreev, 19:56 09-02-2007
    Elroir



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

    Цитата:
    Вот это запускаю, и панель задач не появляется, то есть експлорер не запустился.

    Есть два варианта:
    1. У тебя нет утилиты cmdow.exe (если есть - кинь ее в директорию Windows)
    2. Перед запуском батника, не было открытых директорий - это уже моя недоработка.
    Решение:
    1. Утилита cmdow.exe находится здесь.
    2. Исправленный код -  

    Код:
     
    @echo off
    chcp 1251>nul
    setlocal enabledelayedexpansion
    for /f "usebackq tokens=8*" %%a in (`"cmdow /t /f | find /i "explorer""`) do (
    if /i "%%a"=="explorer" set "open_windows=!open_windows! "%%b""
    )
    taskkill /f /im explorer.exe>nul
    start explorer
    for %%a in (%open_windows%) do start /min explorer %%a
     

     
     
    Добавлено:
    Исправил и немного изменил код в оригинальном батнике - http://forum.ru-board.com/topic.cgi?forum=62&topic=9040&start=780#18

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 23:08 09-02-2007 | Исправлено: Elroir, 23:43 09-02-2007
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Скачал утилиту, закинул ее в директорию Windows, создал батник с изменёным кодом, запустил, вылетели сообщения:

    Цитата:
    Путь "Downloads" не существует или не является каталогом.

    И так для каждой папки.
    А для своего компа я ещё вписываю строки типа таких

    Цитата:
    CHCP 1251
    taskkill.exe /F /IM K-MANIA.EXE /IM SPV.EXE
    start "" "C:\Program Files\Kleptomania\k-mania.exe"
    start "" "C:\Program Files\Arsenal Company\Сократ Персональный 4.1\spv.exe"

    Перезапуск прог, чтобы иконки в трее восстановить.

    Всего записей: 4176 | Зарегистр. 03-05-2006 | Отправлено: 02:32 10-02-2007
    Elroir



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

    Цитата:
    Путь "Downloads" не существует или не является каталогом.  
    И так для каждой папки.

    Это потому, что батник берет названия открытых директорий из заголовков окон. А в Windows могут быть две установки - писать в заголовке только имя директории или полный путь. Соответственно, если там только имя - эксплорер не знает где эта директория находится и не может ее открыть. Переключается эта установка в Tools->Folder Options->View->поставить/убрать галочку на Display the full path in the title bar.

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 03:45 10-02-2007
    ViSiToR



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

    Цитата:
    последняя True значит - дожидаться окончания работы приложения, поэтому наверно и блокирует. Попробуй сделай False.

    Гинеально и просто! спасибо!
     

    Цитата:
    у меня такое есть на чистом vbscript+wget

    Можно взглянуть?
     
     


     
    Как переменную вывести в виде сокращённого пути? или как преобразовывать обычны путь в коротки?
    Т.е к примеру имеем переменную %programfiles%, и нужно чтобы в файл записалось так:
     

    Цитата:
    C:\progra~1

     
    Как это сделать?
     
    Добавлено:

    Цитата:
    Как это сделать?

    Можно так:
     

    Код:
    %programfiles:~0,9%~1

     
    Но! это в случае если эта папка ссылается на стандартное значение (буква диска и program files)?, а также проблема в том, что в корневой папке program files может быть папка с похожим именем (к примеру program films ), и тогда будет проблема - может есть корректны способ это сделать?

    ----------
    ViSiToR a.k.a CreatoR
    CreatoR это не ник, CreatoR это стиль жизни!

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 04:57 10-02-2007
    ViSiToR



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Я давно справшивал, как можно проверить существование файла, и если существует, то присвоить ему уникальное имя которое не существует, мне тогда ответили, но способ был не очень полноцены, и если честно немогу найти где это было...
     
    Поэтому немного поднапрягся, и вот результат:
     

    Код:
    @echo off
    Set File=Test.txt
    Set Num=1
     
    :Loop
     
    If Not Exist %File% Goto EndLoop
    For %%a In (%File%) Do (
    Set FName=%%~na
    Set FExt=%%~xa)
    Set NewFName=%FName%_%Num%%FExt%
    Set /a Num=%Num% + 1
    (If Exist %NewFName% Goto Loop) && (Set NewFName=%NewFName%)
    Set File=%NewFName%
     
    :EndLoop
     
    Echo %File%
    pause

     
    Пока работает (может в шапку его? ).

    ----------
    ViSiToR a.k.a CreatoR
    CreatoR это не ник, CreatoR это стиль жизни!

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 08:11 10-02-2007
    evle



    1 + int rand(100);
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ViSiToR

    Цитата:
    Как переменную вывести в виде сокращённого пути? или как преобразовывать обычны путь в коротки?  

    Из справки к for:
    %~fsI Expands %I to a full path name with short names only.  
    Точно так же можно обрабатывать параметры, переданные батнику (%~fs1). Что делать дальше, думаю, понятно. Сделать без привлечения for, видимо, нельзя.

    ----------
    For every complex problem, there is a solution that is simple, neat, and wrong.

    Всего записей: 2110 | Зарегистр. 03-02-2005 | Отправлено: 08:58 10-02-2007
    ViSiToR



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

    Цитата:
    Из справки к for

    Уау! спасибо!....
    Щас выложу вторую бету шедевра для скачки и распаковки файлов  
     
    Добавлено:
    Опять старые грабли - батнику передаётся параметр ровняющийся ссылке из сети, ссылка содержит символ &, и батник получает только пол ссылки, облазил весь поиск по этой и первой части, нигде немогу найти решение - как передать в качестве параметра ссылку содержащую символы & ?
     
    Добавлено:
    evle
     

    Цитата:
    Сделать без привлечения for, видимо, нельзя.

    Если это путь к батнику, то можно так:
     
    %~fs0

    ----------
    ViSiToR a.k.a CreatoR
    CreatoR это не ник, CreatoR это стиль жизни!

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 09:12 10-02-2007
    Elroir



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

    Цитата:
    присвоить ему уникальное имя которое не существует

    Перебором чисел можно, конечно. А почему-бы не воспользоваться переменной %random% для получения уникального числа? Вероятность, что файл с таким номером уже есть, по моему, меньше.
     

    Цитата:
    Опять старые грабли - батнику передаётся параметр ровняющийся ссылке из сети, ссылка содержит символ &, и батник получает только пол ссылки

    Если передавать параметр в кавычках, то передается полностью. Но вот как дальше работать с этой ссылкой в кавычках, я не знаю.
     
    Добавлено:
    Нет, знаю!!!
    Передаем батнику ссылку в кавычках и делаем так:

    Код:
     
    set test=%1
    set test=%test:&=^&%
    echo %test:~1,-1%
     


    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 13:39 10-02-2007
    ViSiToR



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

    Цитата:
    А почему-бы не воспользоваться переменной %random% для получения уникального числа? Вероятность, что файл с таким номером уже есть, по моему, меньше.

    Присмотрись плиз, мой пример не касается вероятности, там всё точно (файлу присвоится имя с последовательным числом, и гарантия того что такого файла не существует, почти 100%).
     

    Цитата:
    Если передавать параметр в кавычках, то передается полностью

    Да, но потом мучаться с этим параметром.....
     

    Цитата:
    Передаем батнику ссылку в кавычках и делаем так

    Тоже не очень практично, я нашёл более элегантное решение на мой взгляд - просто передаём все символы & как hex-код (& = %26) - см. как я это сделал в Down_and_Extract.bat...
     


     
    Версия 1.0 beta 2 - Down_and_Extract.zip - обновил мой пост (там все описания и список изменении).

    ----------
    ViSiToR a.k.a CreatoR
    CreatoR это не ник, CreatoR это стиль жизни!

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 14:21 10-02-2007
    Elroir



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

    Цитата:
    Присмотрись плиз, мой пример не касается вероятности, там всё точно  (файлу присвоится имя с последовательным числом, и гарантия того что такого файла не существует, почти 100%).

    Я не имел в виду просто добавлять %random% без проверки
    Просто вместо того, чтобы идти по числам от одного и дальше, проверяя каждый раз есть ли такой файл, можно точно также проверять имя файла с %random% - в некоторых случаях это будет быстрее.
    Но в принципе я согласен
     

    Цитата:
    Тоже не очень практично, я нашёл более элегантное решение на мой взгляд - просто передаём все символы & как hex-код (& = %26)

    Красиво! Мой вариант сработает, когда надо рабоать со ссылкой, как с текстом - то есть просто обработка текстового файла.

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

    Страницы: 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

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 2
    vu1tur (27-04-2007 11:55): продолжаем в теме «Задачи на bat-файлах 3»


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru