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

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

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

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

   

vu1tur



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

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

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 11:54 27-04-2007 | Исправлено: Elroir, 03:59 10-09-2007
    igor_andreev

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

    sed 20q text1.txt > new.txt
    sed -n "15p" text2.txt >> new.txt
    sed -n "15p" text3.txt >> new.txt
    sed -n "15,16p" text4.txt >> new.txt


    Всего записей: 1705 | Зарегистр. 08-12-2004 | Отправлено: 01:18 22-05-2007
    euheny



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Elroir
     
    Что-то ничего не выводит
     
    Maza Faka
    NIKZZZZ
     
    Выводит , только с лишним
     
    Кстати не знал , что dir такое может

    Всего записей: 4174 | Зарегистр. 22-11-2006 | Отправлено: 04:11 22-05-2007
    Elroir



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    euheny
    Я проверял на трех машинах с WinXP.
    Как ты запускаешь (точная команда)?

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

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 04:18 22-05-2007
    euheny



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Опа , извиняюсь ...
     
    win.ini за ненадобностью был удалён ...
     
    А можно ли проверку по реестру устроить? (желательно system+software)
     
    Ну и заодно букву диска из батника вынести (для универсальности) .
     
     
    И ещё вопрос напоследок (всё ни как не соберусь спросить)
     
    Как бы установить переменную так , что бы при запуске другого (ни как не связанного с первым)батника , он мог работать с этой переменной?
    Естественно речь не идёт о записи её в файл и подобных мудрениях.

    Всего записей: 4174 | Зарегистр. 22-11-2006 | Отправлено: 05:02 22-05-2007
    NIKZZZZ



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

    Цитата:
    Выводит , только с лишним


    Код:
    echo off
    for /f "tokens=1,2* delims=\" %%i in ('dir /b /s /a:d c:\system32') do (
     Set Letter=%%i
     Set WinCat=%%j
    )
    Echo Letter - %Letter%
    Echo WinDir - %WinCat%

     

    Цитата:
    Как бы установить переменную так , что бы при запуске другого (ни как не связанного с первым)батника , он мог работать с этой переменной?
    Естественно речь не идёт о записи её в файл и подобных мудрениях.

     
    Это можно сделать через реестр, но нужно ли?
     

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 06:31 22-05-2007
    Maza Faka



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

    Цитата:
    Как бы установить переменную так , что бы при запуске другого (ни как не связанного с первым)батника , он мог работать с этой переменной?

    Утилитой "SETX.EXE", есть в дистрибутиве WinXp Pro в папке Support. Одно но,  переменная пропишется в реестре навсегда, пока её не удалишь.

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 07:42 22-05-2007
    Elroir



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

    Цитата:
    А можно ли проверку по реестру устроить? (желательно system+software)  
    Ну и заодно букву диска из батника вынести (для универсальности) .  

    Вот вариант учитывающий эти пожелания:

    Код:
     
    @echo off
    if "%~1"=="" goto :EOF
    setlocal
    for /r %1\ %%a in (.) do (
    if exist %%a\SOFTWARE ( if exist %%a\SYSTEM set "winpath=%%~dpnxa")
    if defined winpath goto found)
    goto :EOF
    :found
    for /f "tokens=1,2 delims=\" %%i in ("%winpath%") do echo %%i\%%j
     

    Буква диска передается с двоеточием: findwin.cmd d:

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

    Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 08:16 22-05-2007
    Gabzya



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    wolf0425
    ВСТУ4
    4оложение
    4оясн.за4.
    тут были вместо 4ок- буквы П и п

    Всего записей: 1149 | Зарегистр. 14-12-2004 | Отправлено: 14:31 22-05-2007
    GORA2



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Имею батник следующего содержания:
    Код:
    @echo off
    cd /d %MYFILES%
    echo MYFILES=%MYFILES%
    echo %%0=%0
    echo %%1=%1
    pause>nul
    exit
    который упакован в ехе файл с помощью QBFC.
    запускаю этот ехе файл на win хр, получаю
    Цитата:
    MYFILES=C:\DOCUME~1\Evgenij\LOCALS~1\APPLIC~1
    %0="D:\totalcmd\Utilites\Create SFX\cmdline_exe.exe"
    %1=C:\DOCUME~1\Evgenij\LOCALS~1\Temp\CMD5490.tmp
    запускаю его же на win 2003? получаю
    Цитата:
    Недопустимый параметр команды SHIFT
    MYFILES=C:\DOCUME~1\ADMINI~1\LOCALS~1\APPLIC~1
    %0=C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\bt4708.bat
    %1="C:\Program Files\totalcmd\Utilites\Create SFX\cmdline_exe.exe"
    Подскажите, где грабли!? Сегодня получил ответ от разработчиков QBFC, они утверждают, что QBFC работает и на win 2003. Может в win 2003 что то по умолчанию выключено, что включено в win xp? Или какие то дополнительные права там нужны для работы батников?

    Всего записей: 1271 | Зарегистр. 26-01-2006 | Отправлено: 16:48 22-05-2007
    NIKZZZZ



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    GORA2
    C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\bt4708.bat - это твой батник. Не отвечай на запрос "Pause" , чтобы батник не стерся, и посмотри его содержимое. По всей видимости QBFC добавил первой строкой команду Shift , чтобы передать батнику параметры запуска через первый параметр командной строки, и эта команда не отрабатывается в Win2003.
     
     
     

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 17:36 22-05-2007
    alfer1979

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

    Цитата:
    sed 20q text1.txt > new.txt  
    sed -n "15p" text2.txt >> new.txt  
    sed -n "15p" text3.txt >> new.txt  
    sed -n "15,16p" text4.txt >> new.txt  

     
    что-то не срабатывает
    пишет "sed" не являеться внутреней или внешней команды, исполняемым файлом или пакетным файлом
     
    P.S. Разобрался . Спасибо . Все работает. Не подскажете как сделать так чтобы копировало не всю строку, а первые 50 символов?  

    Всего записей: 83 | Зарегистр. 12-05-2003 | Отправлено: 18:03 22-05-2007 | Исправлено: alfer1979, 19:08 22-05-2007
    Maza Faka



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

    Код:
     
    @echo off
    setlocal enabledelayedexpansion
    for /f "tokens=*" %%a in (new.txt) do (
    set string=%%a
    echo !string:~0,50!>>outfile.txt)
     

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 19:20 22-05-2007
    euheny



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

    Цитата:
    Это можно сделать через реестр

    Цитата:
    переменная пропишется в реестре навсегда

     
    А может кто знает ключи реестра , которые существуют ограниченное время , ну или хотябы удаляются после перезагрузки? Ну конечно же с минимальными правами доступа.
     
    Elroir
    NIKZZZZ
     
    Хорошо , всё работает, правда если папок на диске очень много , особенно вложенных ...
     

    Всего записей: 4174 | Зарегистр. 22-11-2006 | Отправлено: 04:40 23-05-2007
    Maza Faka



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

    Цитата:
    А может кто знает ключи реестра , которые существуют ограниченное время , ну или хотябы удаляются после перезагрузки?

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce
    Значения в этом разделе удаляются после перезагрузки.

    Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 08:15 23-05-2007
    GORA2



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    NIKZZZZ
    Вы правы. Батник в темповой папке выглядит так
    Код:
    @shift 1
    @echo off
    cd /d %MYFILES%
    echo MYFILES=%MYFILES%
    echo %%0=%0
    echo %%1=%1
    pause>nul
    exit
    Так почему же этот @shift 1 спокойно выполняется в win ХР и не хочет выполняться в win 2003!?

    Всего записей: 1271 | Зарегистр. 26-01-2006 | Отправлено: 08:25 23-05-2007
    NIKZZZZ



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

    Цитата:
    Команда SHIFT при включении расширенной обработки команд поддерживает ключ /n, задающий начало сдвига параметров с номера n, где n может быть от 0 до 9.

    Может в этом все дело?
    Или должно быть Shift /1 ?

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 10:47 23-05-2007
    GORA2



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    NIKZZZZ
    1
    Цитата:
    Или должно быть Shift /1 ?
    Да кабы я добавлял эту команду сам. Ее в таком виде вставляет QBFC и изменить ее я не в силах.
    2 На win XP та же строка обрабатывается и не ругается. Почему?
    3 В демо режиме QBFC создает батник, который выглядит так
    Код:
    @shift 1
    echo off
    cls
    echo -----------------------------------------------------------------
    echo This file created with trial version of Quick Batch File Compiler.
    echo Copyright 2002-2005 by Abyssmedia.com
    echo Offical web-site: http://www.abyssmedia.com
    echo -----------------------------------------------------------------
    pause
    @echo off
    echo %%0=%0
    echo %%1=%1
    cd /d "%MYFILES%"
    echo MYFILES=%MYFILES%
    echo %%0=%0
    echo %%1=%1
    pause>nul
    EXIT

    и призапуске НЕ ругается на команду @shift 1! Значит ВСЕ что надо включено!?
    4 Как попробовать принудительно включить
    Цитата:
     расширенной обработки команд  
    из вне батника/exe файла?
     

    Всего записей: 1271 | Зарегистр. 26-01-2006 | Отправлено: 11:01 23-05-2007
    NIKZZZZ



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

    Цитата:
    НЕ ругается на команду @shift 1!

    Не ругается, из-за   cls - она ругань стирает.

    Цитата:
    Как попробовать принудительно включить

    Это описано в хелпе по cmd.exe. (cmd.exe /?)
    Я посмотрю, у меня были проги, подобные QBFC, найду отпишусь.
     
     
     
     
     
    Добавлено:
    GORA2
    Более продвинутая, чем QBFC прога. Когда-то даже пользовался, понравилась.

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 11:32 23-05-2007
    GORA2



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    NIKZZZZ
    Спасибо, посмотрю.
    Правда вроде бы удалось решить проблему неработоспособности моего батника (преобразованного в ехе с помощью QBFC) в win 2003 простым добавлением в него команды Shift /0.
    Видимо все таки в win XP и win 2003 не одинаково обрабатывают "некорректную" команду Shift 1 !?

    Всего записей: 1271 | Зарегистр. 26-01-2006 | Отправлено: 13:52 23-05-2007
    NIKZZZZ



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

    Цитата:
    Правда вроде бы удалось решить проблему неработоспособности моего батника (преобразованного в ехе с помощью QBFC) в win 2003 простым добавлением в него команды Shift /0

     
    Эта команда добавляется для того, чтобы сдвинуть аргументы. Батник запускается ив папки "%temp%", поэтому %0 укажет путь к этой папке. Чтобы путь был правильным (указывал на exe'шник), при запуске батника в качестве первого параметра добавляется путь и имя созданного екзешника, после которого идут нужные аргументы. Если ты не используешь аргументы командной строки,  это не важно . В принципе, можно наплевать на ошибку "shift", добавив в батник правильный  "shift" -  "Shift" без /1 - он по умолчанию, но как  будет отрабатываться твой ""Shift /0" не знаю. Это ошибка разработчиков QBFC.

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 18:42 23-05-2007 | Исправлено: NIKZZZZ, 18:46 23-05-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

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


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru