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

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

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

vu1tur (04-09-2010 17:46): http://forum.ru-board.com/topic.cgi?forum=62&topic=21297  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199

   

vu1tur



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

 
Важно: копируя батник через буфер обмена из форума не забывайте удалять пробелы в конце каждой строки, т.к. в некоторых случаях из-за этого программа будет работать неправильно!!!
 
Также для удаления концевых пробелов пользуйтесь скриптом от Nagual, или VBS-Скрипт-Модулем от ViSiToR.
 
Для перекодирования кирилицы 866<<>>1251 пользуйтесь онлайн сервисом Перекодировщик кириллицы

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

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 12:40 25-01-2010 | Исправлено: bomzzz, 13:37 20-08-2010
    ComradG



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

    Код:
    set name=%systemroot%\microsoft.net\framework\v2.0.50727\vbc.exe
    for /d %%i in ('%name%') do (
     set name=%%~si
    )
    echo %name%

    Всего записей: 2038 | Зарегистр. 05-07-2008 | Отправлено: 11:06 08-07-2010 | Исправлено: ComradG, 11:08 08-07-2010
    BVV63



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ComradG
    Разве если в пути есть пробелы, то при выполнении цикла проблем не возникнет? Переменная ведь разъименуется.

    Всего записей: 3542 | Зарегистр. 17-08-2009 | Отправлено: 11:19 08-07-2010
    mugil_cephalus

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

    Цитата:
    Например:  
     
    Код:set name=%systemroot%\microsoft.net\framework\v2.0.50727\vbc.exe  
    for /d %%i in ('%name%') do (  
     set name=%%~si  
    )  
    echo %name%

    а ты скрипт проверял ? у тебя работае?

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 11:29 08-07-2010
    NIKZZZZ



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

    Цитата:
    Хм... Это как?


    Код:
    Set LongName=c:\Program Files\Windows Media Player\wmplayer.exe
    FOR /F "usebackq delims=" %%i IN ('%LongName%') do set ShortName=%%~si
    Echo %ShortName%


    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 11:30 08-07-2010
    ComradG



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    mugil_cephalus
    Каэшн работает? А чего ты взбеленился вдруг?
    Правда где for я использовал "%name%" а не '%name%'.

    Всего записей: 2038 | Зарегистр. 05-07-2008 | Отправлено: 11:35 08-07-2010 | Исправлено: ComradG, 11:37 08-07-2010
    mugil_cephalus

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    NIKZZZZ
    у BVV63 в задаче помоему были только  hkey-имена , а не ntfs-имена
     
     
    Добавлено:
    ComradG
    покажи
    Цитата:
    echo %name%


    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 11:36 08-07-2010
    ComradG



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    mugil_cephalus
    Чего тебе показать? Вывод %name%? Я не телепат, можешь уточнить что именно тебе показать?

    Всего записей: 2038 | Зарегистр. 05-07-2008 | Отправлено: 11:39 08-07-2010
    mugil_cephalus

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ComradG
    вообще
    Цитата:
    echo %name%
    - последняя строка твоего кода 1-ого сообщ. стр. , но раз
    Цитата:
    Правда где for я использовал "%name%" а не '%name%'.
    вывод я сам посм.

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 11:43 08-07-2010
    ComradG



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

    P.S> Прошу прощения, там где for в имени переменной я вообще никаких кавычек не ставил. Еще раз прошу прощения за свою оплошность и торопливость, а также забывчивость.
     
    Добавлено:

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

    Каким образом? Просто при получении коротког имени используется DOS-схема.

    Всего записей: 2038 | Зарегистр. 05-07-2008 | Отправлено: 11:47 08-07-2010 | Исправлено: ComradG, 11:53 08-07-2010
    mugil_cephalus

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ComradG
    твое первое сообщение с этой страницы

    Цитата:
    BVV63  
    Например:  
     
    Код:set name=%systemroot%\microsoft.net\framework\v2.0.50727\vbc.exe  
    for /d %%i in ('%name%') do (  
     set name=%%~si  
    )  
    echo %name%  

    я и написал, если код у тебя работает, то покажи вывод
    Цитата:
    echo %name%
    ( это последняя строка твоего кода )
    ну раз
    Цитата:
    P.S> Прошу прощения, там где for в имени переменной я вообще никаких кавычек не ставил. Еще раз прошу прощения за свою оплошность и торопливость, а также забывчивость.  

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

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 12:16 08-07-2010 | Исправлено: mugil_cephalus, 12:18 08-07-2010
    BVV63



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

    Цитата:
    Каким образом? Просто при получении коротког имени используется DOS-схема.

    Да, я не обратил внимания на

    Цитата:
    set name=%%~si

    Всего записей: 3542 | Зарегистр. 17-08-2009 | Отправлено: 12:22 08-07-2010 | Исправлено: BVV63, 12:23 08-07-2010
    ComradG



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

    Код:
    C:\WINDOWS\MICROS~1.NET\FRAMEW~1\V20~1.507\vbc.exe

    теперь тебе спать легче будет?
    Если надо вот тебе скрипт полностью:

    Код:
    @echo off
    setlocal  
    set name=%systemroot%\microsoft.net\framework\v2.0.50727\vbc.exe
    echo %name%
    for /d %%i in (%name%) do (
      set name=%%~si
    )
    echo %name%
    endlocal
    exit /b

     
    Добавлено:
    BVV63
    Так именно это тебе надо было или нет?
     
    Добавлено:
    NIKZZZZ
    То же самое можно сделать и спараметром /d:

    Код:
    set LongName="%programfiles%\Windows Media Player\wmplayer.exe"
    for /d %%i in (%LongName%) do set ShortName=%%~si  
    echo %ShortName%

    И не надо трахаться с кавычками.

    Всего записей: 2038 | Зарегистр. 05-07-2008 | Отправлено: 12:29 08-07-2010
    mugil_cephalus

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    BVV63
    можешь попробовать - http://www.rsdn.ru/article/winshell/batanyca.xml#EOG
    но не знаю, в итераторе цикла не пробовал
     
    Добавлено:
    ComradG
    ладно, соглашусь на новое вводное условие задачи - самомодифицирующиеся скрипты

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 12:39 08-07-2010
    ComradG



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    mugil_cephalus
    Ты прости конечно, но нафига тут дублировать то, что уже решено? У тебя что - порочные отношения с параметром /d у for или просто презрение к тому, что я пишу?

    Всего записей: 2038 | Зарегистр. 05-07-2008 | Отправлено: 12:44 08-07-2010
    BVV63



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

    Цитата:
    Так именно это тебе надо было или нет?

    Так тоже сойдёт.
    Ну, я просто хотел узнать, как под For работать с двойными кавычками (если вообще надо). Несколько методов предложено, можно выбирать .

    Всего записей: 3542 | Зарегистр. 17-08-2009 | Отправлено: 12:46 08-07-2010 | Исправлено: BVV63, 12:47 08-07-2010
    NIKZZZZ



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

    Цитата:
    То же самое можно сделать и спараметром /d:  

    Проще то, к чему привык.

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 12:47 08-07-2010
    mugil_cephalus

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

    Цитата:
    Код:set name=%systemroot%\microsoft.net\framework\v2.0.50727\vbc.exe  
    for /d %%i in ('%name%') do (  
     set name=%%~si  
    )  
    echo %name%  

    это не
    Цитата:
    просто презрение к тому, что я пишу?

    , это интерес к твоим работам

    Цитата:
    У тебя что - порочные отношения с параметром /d у for

    такой нозологии мне не известно

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 12:51 08-07-2010
    ComradG



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    NIKZZZZ
    Не знаю. Может ты и прав. Но мне не хочется вбивать дополнительные параметры тогда, когда все можно сделать проще. Но все равно каждый останется при своем мнение, верно?
    mugil_cephalus
    Ну, удовлетворил свое любопытсво?

    Всего записей: 2038 | Зарегистр. 05-07-2008 | Отправлено: 12:56 08-07-2010
    mugil_cephalus

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

    Цитата:
    Так тоже сойдёт.  
    Ну, я просто хотел узнать, как под For работать с двойными кавычками (если вообще надо). Несколько методов предложено, можно выбирать .

    вот уже обсуждали такую же проблему - http://forum.ru-board.com/topic.cgi?forum=62&topic=19668&start=1980#2
    есть еще вариант -
    Код:
    in ('@"

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 13:01 08-07-2010 | Исправлено: mugil_cephalus, 13:01 08-07-2010
    BVV63



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

    Цитата:
    in ('@"

    Да, так работает даже в сложных случаях. А можно в двух словах (чисто для понимания): что тут происходит?

    Всего записей: 3542 | Зарегистр. 17-08-2009 | Отправлено: 13:38 08-07-2010
       

    Страницы: 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 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 8
    vu1tur (04-09-2010 17:46): http://forum.ru-board.com/topic.cgi?forum=62&topic=21297


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

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.B0ard
    © Ru.B0ard 2000-2024

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru