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

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

Модерирует : gyra, Maz

Widok (10-03-2009 12:39): Лимит страниц. Продолжаем здесь.  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

Widok



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

 
Важно: копируя батник через буфер обмена из форума не забывайте удалять пробелы в конце каждой строки, т.к. в некоторых случаях из-за этого программа будет работать неправильно!!!
 
Примечание: Большие куски кода заключайте в тэг [more]  
 
Смежные темы:
В помощь системному администратору » Автоматизация администрирования
Microsoft Windows » Задачи на bat-файлах 5
 
Полезные ссылки:
· Cmd. Описание от разработчиков
· Урок bat-аники (для начинающих)
· Курс лекций для начинающих. Полезно и просто описано
· Набор GNU утилит для win32
· Пакет утилит для организации интерфейса в bat-файлах
· Использование ansi.sys
· cmdow — изменение параметров и видимости дос-окна
· blat — отправка почты из консоли
· Справка по командам в виде Html
· Команды RunDll32
· Quick Batch File Compiler - Позволяет превратить ваш батник в независимое приложение
· Пример - получение и обработка списка пользователей
· Уильям Станек - Командная строка Microsoft Windows (вплоть до w2k3)
· Простой способ получать текущую дату всегда в одном формате (не зависит от языков и настроек)
 
Старая версия первого сообщения

Всего записей: 24190 | Зарегистр. 07-04-2002 | Отправлено: 12:08 19-11-2007 | Исправлено: Dmitriy05, 22:49 13-04-2008
01MDM



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Rush
Хороший справочник, спасибо

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 08:46 05-04-2008
igor_andreev

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Rush
Спасибо. А я с этой документации(только на английском) и начинал знакомиться с регэкспами, мне в vbscript понадобилось однажды

Всего записей: 1704 | Зарегистр. 08-12-2004 | Отправлено: 12:38 05-04-2008
XXXXL



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте парни!  
Прошу вас в очередной раз помочь.
Нужно устроить сравнение двух .txt документов, если содержимое одинаковое то запустить определенное приложение.
Спасибо.

Всего записей: 286 | Зарегистр. 16-05-2007 | Отправлено: 14:02 05-04-2008
igor_andreev

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

Код:

fc /l 1.txt 2.txt
if not errorlevel 1 start program.exe


Всего записей: 1704 | Зарегистр. 08-12-2004 | Отправлено: 14:13 05-04-2008
XXXXL



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

Всего записей: 286 | Зарегистр. 16-05-2007 | Отправлено: 15:27 05-04-2008
01MDM



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KfarYm
Все очень просто:
пробелы при копировании с форума могут вызвать неправильное выполнение сценария  в целом.
 
Смотри в каждом конкретном случае вывод команд и значения переменных. Всех ньюансов не предусмотришь.
 
Такой пример - отформатировать вывод команды "fsutil fsinfo drives"
И таких с нуль-пробелом есть.
 
Я с этим намучался в свое время  

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 16:50 05-04-2008 | Исправлено: 01MDM, 16:54 05-04-2008
KfarYm

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

Цитата:
Все очень просто:

Увы, совсем не просто…
Даже в конце строк пробелы мешают НЕ ВСЕГДА.
В начале строк, похоже, пробелы\табуляции игнорируются интерпретатором, хотя и тут есть исключение\я
Хочу найти какую-нибудь систематизированную инфу по теме, должны ж быть общие правила (пусть и с исключениями).
Пример, показывающий потребность такой инфы:
используем в качестве разделителей пробел==`space` и двоеточие,
так вот из трех вариантов
"delims=:`space`"
"delims=:"
"delims=`space`:"
правильный только первый. почему? какие правила тут работают?

Всего записей: 34 | Зарегистр. 13-08-2005 | Отправлено: 19:00 05-04-2008 | Исправлено: KfarYm, 19:02 05-04-2008
Elroir



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

Код:
 
set a=abc
set b=%a%def
 

И получим мы в переменной b не "abcdef", как предполагалось, а "abc def" или даже "abc def ".
А в синтаксисе команды "for" пробел в delims всегда должен быть на последнем месте. Нигде в правилах это не написано - выясняется только эмпирическим путем.

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

Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 00:02 06-04-2008
01MDM



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

Цитата:
Увы, совсем не просто…

Я сразу и сказал:

Цитата:
Смотри в каждом конкретном случае

Другое дело когда вывод "неадекватен"
 

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 01:09 06-04-2008
KfarYm

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
01MDM
Elroir
Спасибо за участие.
Выводы не утешают: каждый должен получить свою пайку шишек…
Может поднять тему и собрать по крохам накопленный опыт?
Жалко времени на преодоление "такой чепухи", как синтаксис, правильнее - чистописание.

Всего записей: 34 | Зарегистр. 13-08-2005 | Отправлено: 01:20 06-04-2008
Fraerok



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Нужно из батника запустить "Foxit Reader.exe" с ключем "-Register"... че-то все не могу сообразить как это сделать)

Всего записей: 1723 | Зарегистр. 11-05-2006 | Отправлено: 13:59 06-04-2008
Elroir



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

Код:
start "" "Foxit Reader.exe" -Register


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

Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 14:39 06-04-2008
Fraerok



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Elroir
Спасибо огромное!
 
Еще такой вопрос - есть файл uninstall.log и в нем среди прочих есть строки:

Цитата:
File: C:\Documents and Settings\All Users.WINDOWS\Главное меню\Программы\Mozilla Sunbird\Mozilla Sunbird.lnk
File: C:\Documents and Settings\All Users.WINDOWS\Главное меню\Программы\Mozilla Sunbird\Mozilla Sunbird (Безопасный режим).lnk
File: C:\Documents and Settings\scar\Application Data\Microsoft\Internet Explorer\Quick Launch\Mozilla Sunbird.lnk
File: C:\Documents and Settings\All Users.WINDOWS\Рабочий стол\Mozilla Sunbird.lnk

как бы мне изменить их на:

Цитата:
File: C:\Documents and Settings\All Users.WINDOWS\Главное меню\Программы\Sunbird.lnk
File: C:\Documents and Settings\All Users.WINDOWS\Рабочий стол\Программы\Sunbird.lnk

Т.е. 2 строки удалить (про безопасный режим и Quicklaunch), а в двух оставшихся изменить немного содержание

Всего записей: 1723 | Зарегистр. 11-05-2006 | Отправлено: 16:14 06-04-2008
JekaRus

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
01MDM
Продолжаю совершенствовать батник удаления файлов. Последние строчки удаления файлов такие

elete
attrib -r -s -h *.* 1>nul 2>&1
del /q /a /f *.* 1>nul 2>&1
for /f "tokens=*" %%i in ('dir /b /ad') do rd /s /q "%%i" 1>nul 2>&1

Проблема в том, что некоторые файлы система удалить не дает а переименовать пожалуйста. Какие строчки дописать чтобы после удаления неудаленные файлы и папки переименовывались. Но так чтобы от предыдущих применений имена не мешали. То есть время дописывать к имени файла или еще что нибудь.

Всего записей: 1046 | Зарегистр. 10-08-2005 | Отправлено: 03:46 07-04-2008
Kilich



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Ребята!
А никто часом не знает, как в батнике написать нечто - чтобы можно было указать время отключение дисплея или не отключать никогда(как это можно сделать в свойствах заставки-питание)
Очень нужно...

Всего записей: 267 | Зарегистр. 18-09-2006 | Отправлено: 09:36 07-04-2008
01MDM



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

Цитата:
Проблема в том, что некоторые файлы система удалить не дает а переименовать пожалуйста.

 
Ты удаляешь на работающей системе? Если нет, то надо выставить атрибуты на файлы не только в корне папки, с которой начинается "зачистка", но и рекурсивно вниз.
 
Я специально создал тестовую папку с подпками и файлами. Выставил самые "неудаляемые" аттрибуты. В результате все удалилось и с выделенной строкой и вообще без нее  
Попробуй так:

Код:
 
:delete
pushd "c:\path\to\folder"
for /f "tokens=*" %%i in ('dir /b /s') do attrib -r -s -h "%%i" 1>nul 2>&1
del /q /a /f *.* 1>nul 2>&1
for /f "tokens=*" %%i in ('dir /b /ad') do rd /s /q "%%i" 1>nul 2>&1  
popd
 

Если это работающая система, то с файлами занятыми каким-либо процессом, ничего не сделаешь.
Батник при этом должен быть в другом месте, или он себя удалит.    

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 09:48 07-04-2008
JekaRus

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
01MDM
На самом деле система работающая. Я этот батник по сети запускаю и у юзеров место на дисках освобождаю. Но когда возникает надобность драйвер для принтера установить, а он ни в какую не устанавливается нужно вычистить папку spool. В ней файлы от драйверов хранятся и удалить их нельзя тк они заняты системой. А переименовать их очень даже можно. Проверено неоднократно. До сих пор все это в ручную делаю. Нужно просто в конце удаления файлов и папок цикл написать по переименованию. Батник сам себя не удалит. Я тебе только концовку написал. Полный вид такой

@echo off
setlocal
for %%i in (C) do (if not %~d0==%%i: call:clean %%i)
goto:eof
:clean
if exist C:\WINDOWS\system32\spool\drivers\w32x86 (
    pushd C:\WINDOWS\system32\spool\drivers\w32x86
    call:delete
    popd
)
goto:eof
elete
attrib -r -s -h *.* 1>nul 2>&1
del /q /a /f *.* 1>nul 2>&1
for /f "tokens=*" %%i in ('dir /b /ad') do rd /s /q "%%i" 1>nul 2>&1
rename *.*

 
И еще у этого батника есть странная особенность. Почему то он не работает если запустить с диска С: А с диска Д: нормально все отрабатывает. Это не принципиально просто копирую на шару d$ а не c$ и оттуда запускаю. Просто интересно почему.
 
 

Всего записей: 1046 | Зарегистр. 10-08-2005 | Отправлено: 10:32 07-04-2008
igor_andreev

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

Цитата:
Просто интересно почему.  

из-за этого

Цитата:
for %%i in (C) do (if not %~d0==%%i: call:clean %%i)

Ведь когда батник находится на диске С будет if not C: == C:

Всего записей: 1704 | Зарегистр. 08-12-2004 | Отправлено: 10:44 07-04-2008 | Исправлено: igor_andreev, 10:48 07-04-2008
01MDM



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
JekaRus
 
Первоначально батник предназначался для запуска с ливсд. Поэтому и проверяется условие что бы обрабатывались все доступные диски, кроме того где сам батник.
 
Так я не понял, он очищает spool или нет? Или надо переименовывать?

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 11:40 07-04-2008 | Исправлено: 01MDM, 11:44 07-04-2008
magazinus



Tracker Mod
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Знатоки, подскажите решение задачки: есть два текстовых файла (ifname1.txt, ifname2.txt), в которых каждая запись начинается с новой строки, файлы различаются двумя-тремя записями, необходимо сравнить их и полностью удалить отличающиеся строки. Можно использоваться стороннюю консольную утилиту. (вопрос только - какую? )

Всего записей: 1364 | Зарегистр. 14-01-2007 | Отправлено: 13:29 07-04-2008
   

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

Компьютерный форум Ru.Board » Компьютеры » Программы » Командная строка, батники, сценарии (bat, cmd) 2
Widok (10-03-2009 12:39): Лимит страниц. Продолжаем здесь.


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru