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

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

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    помогите разобраться с кодировкам
     
    @echo Привет
     
    Выдает вот это:
    &#9573;хёЄ
     
    chcp 1251 не помогает

    Всего записей: 463 | Зарегистр. 01-10-2003 | Отправлено: 12:29 23-12-2009
    mugil_cephalus

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

    Цитата:
    btw, посмотрел я свой последний батник...

    в смысле, в одном *.bat-файле и скрипт, и конфиг, и логи?? это, методолгически, как в object-oriented programming?
     
    Добавлено:
    kermit
    в окне консоли введи chcp без параметров - какая стоит там кодировка?

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 12:36 23-12-2009
    kermit

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

    Цитата:
    в окне консоли введи chcp без параметров - какая стоит там кодировка?

     
    дефолтная, 866

    Всего записей: 463 | Зарегистр. 01-10-2003 | Отправлено: 12:46 23-12-2009
    mugil_cephalus

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

    Цитата:
    @echo Привет  

    это пишешь в консоли или в bat-файле ?
     
    Добавлено:
    если в файле, - сохраняй его в dos-кодировке, напрмер, wordpad'om
     
    Добавлено:
    wolf0425

    Цитата:
    btw, посмотрел я свой последний батник...  

     

    Цитата:
    Большое спасибо!  
    просто батник на 1700 строк это слишком, вот решил сделать поменьше, убрать лишнее

    http://forum.ru-board.com/topic.cgi?forum=62&topic=9040&start=1340#16
    вот у кого жизнь - не малина

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 12:53 23-12-2009
    kermit

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

    Цитата:
    если в файле, - сохраняй его в dos-кодировке, напрмер, wordpad'om  

     
    спасибо, помогло!
    честно сказать удивлен, ведь я до этого сохранял в dos-кодировке из редактора SynPad.
    сейчас открываю в синпаде оба файла (старый и пересохраненный через вордпад), показывает что у обоих кодировка MS-DOS Batch, но при выполнении синпадовский батник выводит "кракозябры"

    Всего записей: 463 | Зарегистр. 01-10-2003 | Отправлено: 14:22 23-12-2009
    mugil_cephalus

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

    Цитата:
    честно сказать удивлен, ведь я до этого сохранял в dos-кодировке из редактора SynPad.

    с этим редактором не знаком, но можешь посм. здесь - http://forum.ru-board.com/forum.cgi?forum=5 - может там есть топик по synpad'u

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 14:58 23-12-2009
    BlackLabel



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Ребята помогите с батничком ,  
     
    Требуется запустить на компе 2 скайпа , собственно пишу в БАТ файле такой текст  
     
    @ECHO OFF
     
    "C:\Program Files (x86)"\Skype\Phone\Skype.exe /secondary /username:123456789/password:123456789
     
    и нормально запускаю 2 скайпа , но проблема в том что черный экран CMD окошка остается    
     
     
    Как правильно написать что бы после запуска Скайпа окно CMD закрывалось ?  
     
    СПАСИБО

    Всего записей: 1031 | Зарегистр. 14-04-2004 | Отправлено: 19:09 23-12-2009
    CMD



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    BlackLabel
    start "C:\Program Files (x86)"\Skype\Phone\Skype.exe /secondary /username:123456789/password:123456789  
     
    Вопрос всем:
    как windows 7 проверить запущен ли батник с правами администратора?
    В XP было просто: net user %username% | findstr "Администраторы Administrators" , но в семерке от этого мало толка - UAC всё ограничивает.

    Всего записей: 311 | Зарегистр. 18-05-2004 | Отправлено: 19:23 23-12-2009 | Исправлено: CMD, 19:53 23-12-2009
    BlackLabel



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    CMD
     
    Интересно то что не получилось ....  
     
    добавление Start не запустило программу , но добавление start "" вполне заработало  
     
    вот так заработало на WinXp  
     
    start "C:\Program Files (x86)"\Skype\Phone\Skype.exe /secondary /username:123456789/password:123456789  
     
    На семерке никак не захотело запускаться , не знаю с чем это связано  ...
     
    А с командой start ""  успешно запустилось и на семерке

    Всего записей: 1031 | Зарегистр. 14-04-2004 | Отправлено: 19:34 23-12-2009
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    CMD BlackLabel
    а чего вы хотели: у команды start первый параметр в "" -  имя окна.
    так что привыкайте писать start "" program - тогда замена program на "program" проходит без нежданчиков.

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 20:27 23-12-2009
    Mr_Hat



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    кхм...
    Уважаемые коллеги и прочие любители и ценители сего жанра.
    Подскажите как мне посредством командной строки определить нахождение папки "Рабочий стол"
    Задача расширенная:
    нахождение залогинившегося пользователя
    нахождение всех пользователей.

    Всего записей: 984 | Зарегистр. 04-10-2005 | Отправлено: 22:27 23-12-2009
    wolf0425



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

    Цитата:
    Подскажите как мне посредством командной строки определить нахождение папки "Рабочий стол"  
    если система русская то %USERPROFILE%\"Рабочий стол" если нерусская %USERPROFILE%\Desktop.
    И поаккуратнее там с кавычками...
     

    Цитата:
    Задача расширенная:
    нахождение залогинившегося пользователя
     
    echo %USERNAME%

    Цитата:
    нахождение всех пользователей.

    тебе достаточно будет результата net users  
    или хочешь чего-то странного?
     
    еще, вот тут обсуждалось как определить последний логин по следам в файлах.
    http://forum.ru-board.com/topic.cgi?forum=62&topic=17154&start=1200
    код был по живому выдран из батника определения предпоследнего логинившегося

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 22:44 23-12-2009 | Исправлено: wolf0425, 22:45 23-12-2009
    Ortios



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

    Цитата:
    надо избиратьтельно прибить все теги в неправильном месте, оставив в остальных  
    строки в файле примерно такие:  
    ^(тут оставить как есть)</small>(тут прибить теги <br> и любые другие)</DL>$

    Если тебе еще актуально, держи:

    Код:
    sed -r "s/<\/small>/&\n/" 1.txt|sed "/<\/DL>/s/<[^>]*>//g"|sed "$!N;s/\n/ /;s/$/<\/DL>/" >2.txt

    Всего записей: 73 | Зарегистр. 24-12-2007 | Отправлено: 23:41 23-12-2009
    Umboking

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

    Цитата:
    потому что если папки нет - ругнется в stderr "File Not Found"

    Странно, у меня это работает только в том случае, если батник лежит в папке в которой находится папка xx с папкой xxx внутри, если батник поместить непосредственно в папку xx, то он просто не видит папку xxx не зависимо от того - есть она или нет. И насколько я понял - это правильно. Нет? а вот этот батник:  

    Код:
    dir /b /ad xxx 1>nul  && echo xxx - папка

    работает правильно, если есть папка xxx - пишет, если нет - ничего не пишет, правда и ошибку не выводит.

    Цитата:
    неправильный у тебя эстетизм какой-то - длинная строка, представляющая законченную функциональную связку - сильно удобнее нескольких последовательных срок (делающих то же самое). например ее быстрее закомментарить для отладки батника, в ней тяжелее потерять что-то при бэкапе куска кода...
    Ну я так привык    и потом - ограничение на длину строки существует. А если мне надо отработать 8-10 команд, то строка абсолютно нечитаемая. В общем дело вкуса, а за примеры ещё раз спасибо    
     

    Всего записей: 31 | Зарегистр. 21-12-2009 | Отправлено: 00:09 24-12-2009
    wolf0425



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

    Цитата:
    Странно, у меня это работает только в том случае, если батник лежит в папке в которой находится папка xx с папкой xxx внутри
    так и задумано, строго в соответствии с заданием:
    Цитата:
    необходимо проверить в папке XX наличие папки XXX
    xx\xxx - имя относительно текущего каталога. Если тебе нужно было проверять наличие папки xxx не в папке xx, а в текущей - так и надо было писать...

    Цитата:
    А если мне надо отработать 8-10 команд, то строка абсолютно нечитаемая.
    если каждая команда использует или консольный вывод предыдущей или признак успешного завершения предыдущей - то развертывание этих 10 команд в столбик даст еще более нечитаемый столбик команд, да еще и с зависимостью его работоспособности от пробелов в концах строк.
    вон выше мне три sed в строку написали, с коротенькими скриптиками.
    как сам думаешь - если развернуть эту строку в три - она станет более читаемой или нет?
    ну а до ограничения на длину строки надо сначала дорасти, точно знаю что строка в 260 символов проблем в ХР еще не вызывает (это одна команда - параметры длинные)

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 03:27 24-12-2009
    Verter



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Как скопировать файлы из папки А в папку B, такие которые есть в папке А, но которых нет в папке B. То есть без перезаписи файлов которые уже есть в папке В. Метод сравнения - по имени файла (без контрольных сумм). Удаление содержимого папки В перед копированием - не предлагать. Искал, не нашел.

    Всего записей: 598 | Зарегистр. 10-01-2004 | Отправлено: 07:55 24-12-2009
    wolf0425



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Verter
    for %%a in ( ".\A\*.*" ) do if not exist ".\B\%%~nxa" copy "%%a" .\B\

    Всего записей: 2928 | Зарегистр. 25-04-2007 | Отправлено: 08:58 24-12-2009 | Исправлено: wolf0425, 09:01 24-12-2009
    Fearless2006

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Доброго времени суток. помогите пожалуйста решить такую задачу: "Создать командный файл, который организует отображение на экране содержимого всех указанных файлов текущего каталога, делает запрос на необходимость копирования. В случае положительного ответа копирует эти файлы на дискету"
    вот чего смог добиться своими усилиями
     
    @echo off
    dir
    if exist %1 goto n
    echo file not found %1
    goto end
    :n
    type%1
    xcopy /w A:\
    end

    Всего записей: 2 | Зарегистр. 24-12-2009 | Отправлено: 10:02 24-12-2009
    mugil_cephalus

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

    Цитата:
    Цитата:btw, посмотрел я свой последний батник...  
     
    в смысле, в одном *.bat-файле и скрипт, и конфиг, и логи??  

     

    Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 10:27 24-12-2009 | Исправлено: mugil_cephalus, 22:42 24-12-2009
    maa78s

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Всем привет!
    Помогите пожалуйста с bat-файлом.
    У меня батник копирует файлы с одной папки "Work" в папку "Archive", без какой либо проверки, т.е. при совпадении имени файла он заменяет файл.
    pushd "%Work%\"
    FOR /f "tokens=*" %%a IN ('dir /b /a-d') DO (if %%~za LSS 10000 (copy "%%~fa" "%Archive%\"))
    Как сделать проверку, если копируемый файл уже существует в папке Archive, то имя этого файла записывается в текстовый документ. А сам файл в любом случае должен заменяться.
    Буду очень признателен.

    Всего записей: 17 | Зарегистр. 10-07-2009 | Отправлено: 13:18 24-12-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