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

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

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

vu1tur (25-01-2010 12:41): лимит страниц, продолжение: http://forum.ru-board.com/topic.cgi?forum=62&topic=19668  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

vu1tur



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

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

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

  • Всего записей: 3690 | Зарегистр. 01-02-2003 | Отправлено: 11:37 26-05-2009 | Исправлено: TechnicsKuzya, 13:53 27-12-2009
    NIKZZZZ



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

    Цитата:
    может синтаксис:
    if %errorLevel%  NEQ 0 (goto type1)

    Одна команда - GoTo , зачем скобки?

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 21:25 14-10-2009
    mugil_cephalus

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

    Цитата:
    Здесь непонятно, к чему относится "not"

    F:\Documents and Settings\admin>if /?
    Оператор условного выполнения команд в пакетном файле.
     
    IF [NOT] ERRORLEVEL число команда
     

    Цитата:
    Одна команда - GoTo , зачем скобки?  

    так у Станека в книге

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 21:38 14-10-2009
    wolf0425



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

    Цитата:
    меня этого - 83572.txt - файла точно нет, поэтому может быть все, что угодно, но не ноль и конструкция if not ErrorLevel 0 должна давать true  
    замечательно. предположим что у тебя errorlevel=1
    для такого кода сочетание (errorlevel 0) равно true так как 1 больше чем прописанный для сравнений 0
     
    в команде if ErrorLevel 1 goto :error
    переход происходит при значениях %ErrorLevel% 1 или больше
     
    Хочешь сравнивать на равно - сравнивай числа сам и на равенство, а не проси готовый результат сравнения %ErrorLevel% >= число.
     
     
     
     
     
    Добавлено:

    Цитата:
    так у Станека в книге  
    Ну скажи спасибо ему или переводчику.
    Как правильно - можешь потестировать сам или поискать на microsoft.com

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 01:17 15-10-2009
    BVV63



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

    Цитата:
    А можно файл:  
    cd.>C:\1.txt

    Ну, надо же. Сколько хитростей я не знаю, оказывается.
    2. Свою проблему с for... in... do... (описана на предыдущей странице) я решил. Оказывается между for и ключом /f в Семёрке и XP нужен пробел, а в Висте он не обязателен.
    3. Перенос строки ^ в Семёрке стал хуже работать . Посреди полного имени файла его применять стало нельзя - система не понимает.

    Всего записей: 3542 | Зарегистр. 17-08-2009 | Отправлено: 06:22 15-10-2009
    Kashey69



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    При добавлении коментария к учетной записи пользователя с помощью команды
    Код:
    net user user /comment:"bla bla"
    стоит ограничение на его длину в 48 символов, однако при использовании GUI такого ограничения вроде нет. Есть ли возможность в батнике обойти ограничение на длину комментов?

    Всего записей: 36 | Зарегистр. 27-11-2008 | Отправлено: 11:05 15-10-2009
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Kashey69
     
    У меня позволяет вставлять больше 48 знаков (Win-7 7600 RTM)

    Код:
     
     > net user mdm /comment:"Это тестовый комментарий, состоящий из 48 знаков"
    The command completed successfully.
     
     > net user mdm /comment:"Это тестовый комментарий, состоящий из 49 знаков."
    The command completed successfully.
     

     

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 11:21 15-10-2009 | Исправлено: 01MDM, 11:22 15-10-2009
    tolyn77



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    подскажите пожалуйста как сформировать сегодняшнюю дату в такой форме?
    месяц_день, пример 10_08

    Всего записей: 1498 | Зарегистр. 07-09-2004 | Отправлено: 11:28 15-10-2009
    Kashey69



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ось- XP SP3. Выполняется команда не из окна cmd, а запускается из батника. Батник выполняет ф-цию добавления пользователя.
    Выдает следующее сообщение
    Для параметра /СOMMENT введено недопустимое значение

    Всего записей: 36 | Зарегистр. 27-11-2008 | Отправлено: 11:31 15-10-2009
    slay1212

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

    Цитата:
    при ключе  
    HKCU\Software\Policies\Microsoft\Windows\System\DisableCMD=1 все должно пахать - но не пашут батники. Как при =2 ключике. "Приглашение комстроки отключено вашим администратором".  

      Сам себе отвечу - ключ = 1 отключает и запуск бат cmd, и запрет за запуск cmd. А =2 = запрещает только запуск комстроки, а батники разрешает. И из фара например комстрока в случае =2 тож работает, что очень грустно . Вообще цель такая - запретить запуск и смд и ком строки (чтоб не пахали системные вещи типа net use, а мои батники cmd как нибудь работали, например из планировщика, или еще как.  Кто что посоветует? Пока при =1 бат задания из планировщика не запускаются. Но можно например запустить что-то из проводника.  

    Всего записей: 336 | Зарегистр. 28-05-2008 | Отправлено: 11:38 15-10-2009
    01MDM



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

    Цитата:
    Выполняется команда не из окна cmd, а запускается из батника

    Разницы нет.

    Цитата:
    Ось- XP SP3

    Наверное нельзя, вопрос где эти данные сохраняются?
    tolyn77

    Код:
     
    @echo off
    for /f "tokens=1,2 delims=." %%i in ("%date%") do set "d=%%j_%%i"
    echo %d%
     

    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 12:00 15-10-2009
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    tolyn77
    Цитата:
    подскажите пожалуйста как сформировать сегодняшнюю дату в такой форме?
    месяц_день, пример 10_08
    set d=%date:~3,2%_%date:~0,2%

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 12:21 15-10-2009 | Исправлено: wolf0425, 15:38 15-10-2009
    Kashey69



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

    Цитата:
    Наверное нельзя, вопрос где эти данные сохраняются?

    Но если через control userpasswords2 добавлять комментарий, то все норм. ограничения никакого нет, поэтому напрашивается вопрос, как в батнике это обойти. нужен комментарий длиннее чем 48 символов.  

    Всего записей: 36 | Зарегистр. 27-11-2008 | Отправлено: 12:39 15-10-2009
    FXPELIVE

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

    Цитата:
    Задача не полная, как отличить что создавать, каталог или  файл? По каким признакам? Можно создать папку:  
    md C:\1.txt  
     
    А можно файл:  
    cd.>C:\1.txt

    Я и сам непонял... Препод сказал что-то вроде: k18.bat C:\test file1.txt file2.txt

    Всего записей: 348 | Зарегистр. 27-04-2006 | Отправлено: 13:04 15-10-2009
    01MDM



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    FXPELIVE
    Ну тогда с условием, что если с расширением, то это файл:

    Код:
     
    @echo off
     
    for %%i in (%*) do (
        if exist %%i (
             echo %%i already exist
        ) else (
             if not "%%~xi"=="" (cd.>%%i) else (md %%i)
       )
    )
     


    Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 13:20 15-10-2009
    FXPELIVE

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

    Всего записей: 348 | Зарегистр. 27-04-2006 | Отправлено: 13:31 15-10-2009
    tolyn77



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    01MDM
    wolf0425
    спасибо
     
    Добавлено:
    нужно в винде через проксю качнуть файлы по фтп, делаю скрипт
    set use_proxy=on
    set ftp_proxy=http://anti:virus@proxy:3128
    set http_proxy=http://anti:virus@proxy:3128
     
    wget -v --cache=off --no-directories --timestamping --directory-prefix=D:/ ftp://ftp.ru:21/*
    а он на проксе выдает такую ошибку в чем может быть дело?
     
    Resolving proxy... 10.0.0.1
    Connecting to proxy|10.0.0.1|:3128... connected.
    Proxy request sent, awaiting response... 502 Bad Gateway
    2009-10-15 15:16:13 ERROR 502: Bad Gateway.
     
    подскажите что не правильно делаю?
    заранее благодарен

    Всего записей: 1498 | Зарегистр. 07-09-2004 | Отправлено: 15:07 15-10-2009
    7ead3471

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Возможно пропустил...но гугль не помог или туплю. в общем есть такой код
     

    Код:
     
    call :read_settings %~dp0Settings.txt || exit /b 1
     
     HOST  : %HOST%
     LOGIN    : %LOGIN%
     PASS: %PASS%
     FOLDER_IN: %FOLDER_IN%
     FOLDER_OUT: %FOLDER_OUT%
             
    :read_settings
     
    set SETTINGSFILE=%1
     
    if not exist %SETTINGSFILE% (
        echo FAIL: Can't find file
        exit /b 1
    )
     
    for /f "eol= delims== tokens=1,2" %%i in (%SETTINGSFILE%) do (
     
        set %%i=%%j
    )
     
    echo %LOGIN%>>ftp.txt  
    echo %PASS%>> ftp.txt  
    echo lcd %FOLDER_OUT%>> ftp.txt  
    echo cd %FOLDER_IN%>> ftp.txt  
    echo bin>> ftp.txt  
    echo mget * -y >> ftp.txt  
    echo close >> ftp.txt  
    echo quit >> ftp.txt
     
     ftp -s:ftp.txt %HOST%  
     
    del ftp.txt
     
    PAUSE
     

     
    Во входном файле Settings.txt хранятся логин пароль адрес и тд фтп сервера.
    При создании файла ftp.txt к каждой строчке добавляется пробел и соответственно залогинится на сервер не получается.=(
    КАК избавится от этих чертовых пробелов?

    Всего записей: 2 | Зарегистр. 15-10-2009 | Отправлено: 15:58 15-10-2009 | Исправлено: 7ead3471, 16:01 15-10-2009
    mugil_cephalus

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

    Цитата:
    Ну скажи спасибо ему или переводчику.  
    Как правильно - можешь потестировать сам или поискать на microsoft.com  

    как правильно - вот ответ:
    F:\Documents and Settings\admin>if /?
    Оператор условного выполнения команд в пакетном файле.
     
    IF [NOT] ERRORLEVEL число команда
    IF [NOT] строка1==строка2 команда
    IF [NOT] EXIST имя_файла команда
     
    скобок нет... (если не расматривать конструкцию с else) У станека не верно.
     
    Добавлено:
    wolf0425

    Цитата:
    замечательно. предположим что у тебя errorlevel=1  
    для такого кода сочетание (errorlevel 0) равно true так как 1 больше чем прописанный для сравнений 0  
     
    в команде if ErrorLevel 1 goto :error  
    переход происходит при значениях %ErrorLevel% 1 или больше  
     
    Хочешь сравнивать на равно - сравнивай числа сам и на равенство, а не проси готовый результат сравнения %ErrorLevel% >= число.  
     

    я что-то тебя не пойму - у меня же код с NOT:  

    Цитата:
    :type1  
    type 83572.txt  
    if not ErrorLevel 0 (goto type1)

     
    type 83572.txt у меня, кажется, выдает errLvl 1, но 1 точно не равен 0

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 16:02 15-10-2009
    wolf0425



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

    Цитата:
    type 83572.txt у меня, кажется, выдает errLvl 1, но 1 точно не равен 0

    ну да, он не только не равен - он больше
     
    внимательно читаем if /?  
    ERRORLEVEL number  
    Specifies a true condition if the last program run returned an exit code equal to or greater than the number specified.
     
    еще вопросы?

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 16:59 15-10-2009 | Исправлено: wolf0425, 17:00 15-10-2009
    mugil_cephalus

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

    Цитата:
    Гарантировано:  
     
    Код:if %errorLevel%  NEQ 0 goto type1  
     
    И лучше использовать именно такой синтаксис.

    вот скрипт:
    echo on
     
    :type1
    type 83572.txt
    if %ErrorLevel% neq 0 goto type1
     
    pause
     
    все работает (всем спасибо)
     
    вопрос: кто-нибудь знает, сколько будет по времени так крутится этот бесконечный цикл (время как-то регламентировано в настройках cmd или нет)

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 17:01 15-10-2009
       

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

    Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 7
    vu1tur (25-01-2010 12:41): лимит страниц, продолжение: http://forum.ru-board.com/topic.cgi?forum=62&topic=19668


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru