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

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

Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Помогите неучу! Переодически ковыряюсь в играх и если оттучить от диска полностью не выходит приходится пользоваться батниками, а конкретнее командой subst. Был нарисован код, избавляющий конечного юзера от проблем и без проблем пашущий в Хрюшке. Но в системах 9х поперли проблемы:
*При попадании на съемный диск выводится запрос "стоп\повтор\сброс\". Как игнорировать сей запрос?
*При запуске игры код выполняется дальше, а не ждет, пока игра завершится.
Подскажите, как подправить батник, чтоб он работал в 9х\МЕ так же, как и в ХР.  

Всего записей: 38 | Зарегистр. 05-02-2008 | Отправлено: 12:38 12-02-2008 | Исправлено: Sandy Ann, 22:49 13-02-2008
AndreyG

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всем спасибо. В выражении
@echo off  
for /D %%a in (*.*) do ( "c:\program files\winrar\winrar.exe" a -ap%%a -ep1 "%%a" "%%~fa\*.*")  
)
всё работает даже с лишней скобкой. %% - это мои папочки?
Андрей

Всего записей: 36 | Зарегистр. 22-11-2002 | Отправлено: 15:06 14-02-2008 | Исправлено: AndreyG, 15:09 14-02-2008
Fraerok



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

Цитата:
rundll32 user32.dll,UpdatePerUserSystemParameters

как с батником связать?

Всего записей: 1723 | Зарегистр. 11-05-2006 | Отправлено: 12:31 15-02-2008
01MDM



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Fraerok
Просто допишешь команду в батник и все, но я сомневаюсь, что это поможет. Тоже как-то пытался применить изменения в HKCU на лету. Получается только через logoff.

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 12:41 15-02-2008
gryu



дикий гусь
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Коллеги. Понимаю, что это всё очень просто, но что то никак не соображу.
Задача.
Батник переписывает с сетевого  диска на локальный  файлы и запускает локальную программу.  
Файлы, это файлы обновлений.  
Сейчас сделано в тупую  
copy \\**\***\Shared\*.*  C:\***\Shared\ /y
C:\***\***.exe
При этом каждый раз копируются все файлы.  
Хотелось бы, что бы копирывались только изменённые и новые.
Как это сделать?  
И ещё хотелось бы, что бы в случае если всё отработало нормально (файлы переписались и прога запустилась), то досовское окошко само закрывалось (а то оно так и висит).
Но при этом в случае ошибки, оно не закрывалось, а оставалось. Плюс ошибка писалась бы в файл. типа  >>error.txt  

Всего записей: 13033 | Зарегистр. 15-03-2006 | Отправлено: 17:12 15-02-2008
01MDM



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

Код:
 
@echo off
xcopy "\\**\***\Shared\*.*"  "C:\***\Shared\"  /q /d /y  
start "" "C:\***\***.exe"  
 

xcopy /? - чтоб выбрать нужные опции
 

Цитата:
Но при этом в случае ошибки, оно не закрывалось, а оставалось. Плюс ошибка писалась бы в файл. типа  >>error.txt

Какой ошибки? Запуска ***.exe?
 
 

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 19:52 15-02-2008
gryu



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

Цитата:
Какой ошибки? Запуска ***.exe?  

Нет.
Ошибки перезаписи.  
1. не найден сетевой диск
2. Не получен доступ
3. .....
Ехзешник то запускается в любом случае.

Всего записей: 13033 | Зарегистр. 15-03-2006 | Отправлено: 12:43 18-02-2008
01MDM



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
gryu
 
Попробуй просто ошибки xcopy перенаправить в лог ошибок, конечно информация будет не полная, но уже можно будет проанализировать.

Код:
 
@echo off
xcopy "\\**\***\Shared\*.*"  "C:\***\Shared\"  /q /d /y 2>>err-%date%.log  
start "" "C:\***\***.exe"  
 


Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 11:23 19-02-2008
clio77



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

Всего записей: 2441 | Зарегистр. 27-10-2003 | Отправлено: 21:28 19-02-2008 | Исправлено: clio77, 21:34 19-02-2008
JekaRus

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Скажите пожалуйста можно ли реализовать различное выполнение команд в зависимости от того, что находит команда findstr. Например если находится строчка х32, то goto :32, если находится х64 то goto :64. Подобно реализации ветвления в зависимости от результата команды ping.

Всего записей: 1046 | Зарегистр. 10-08-2005 | Отправлено: 05:33 20-02-2008
ViSiToR



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Возможно ли через ком. строку установить время (изменён) для файла? (не используя внешние средства).
 
JekaRus

Цитата:
если находится строчка х32, то goto :32

На конце всегда число, которое одновременно является меткой? если нет, то можно сразу и проверять, If %%i==x32 Goto 32 - Иначе нужно сохранять в переменную и брать последние N' символов..
 

Код:
@Echo Off
For /F "delims=" %%i In ('FINDSTR /I "x32" Test.txt') Do Set Var=%%i
GoTo %Var:~-2%
 
Echo Test 1
Exit
 
:32
Echo Test 2


----------
ViSiToR a.k.a CreatoR
CreatoR это не ник, CreatoR это стиль жизни!

Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 07:36 20-02-2008 | Исправлено: ViSiToR, 07:38 20-02-2008
lid111

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Решение моей проблемы давно известно, но буду благодарен за текст батника или ссылку. Надо поставить в автозагрузку требование очистки всех папок с названием Temp и Temporary Internet Files при включении или при выключении (что лучше?) компьютера.

Всего записей: 1547 | Зарегистр. 15-09-2006 | Отправлено: 15:02 20-02-2008
Wise_Kaa



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Доброго дня.
ОС: Windows 2000, есть там такая команда tlist -p <имя процесса>, которая выводит на экран PID указанного процесса. В случае, если процесс с указанным именем не найден, выводится "-1". Можно ли выводимое значение присвоить какой-то переменной?
Вообще задача такая, если процесс с указанным именем не найден, то перейти по метке.
P.S. Может быть можно как-то перенаправить выводимое сообщение в переменную?

Всего записей: 59 | Зарегистр. 04-01-2006 | Отправлено: 17:13 20-02-2008
sanb



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
что здесь не так?
первый батник
wmp11-windowsxp-x86-ru-ru.exe /T:c:\extract /C
второй
c:\extract\wmp11.exe /T:c:\extract\decoder /C
первый батник делает свою работу но второй нет при этом выскакивает справка по командной строке по установке wmp11
как решить эту проблему и еще можно ли объединить весь процес в один батник?
заранее благодарен

Всего записей: 2189 | Зарегистр. 26-07-2006 | Отправлено: 19:21 20-02-2008
Elroir



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

Цитата:
Надо поставить в автозагрузку требование очистки всех папок

Что означает "требование очистки"?
 
Wise_Kaa

Цитата:
Может быть можно как-то перенаправить выводимое сообщение в переменную?

Можно.

Цитата:
Вообще задача такая, если процесс с указанным именем не найден, то перейти по метке.

Покажи вывод команды tlist (только полностью), когда процесс найден и когда не найден.


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

Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 23:09 20-02-2008 | Исправлено: Elroir, 23:11 20-02-2008
lid111

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

Цитата:
Что означает "требование очистки"

Разве неясно: удаление всех файлов из всех папок с такими именами, имеющихся на компе (то есть для всех пользователей) мимо корзины, разумеется. Разве очистка и удаление содержимого - не синонимы? Хотя, вероятно, вас смутило странное слово "требование"?
 
Я уже встречал подобное на чьем-то компе, видимо, это включается в какую-то сборку (сборки) Windows.

Всего записей: 1547 | Зарегистр. 15-09-2006 | Отправлено: 01:00 21-02-2008 | Исправлено: lid111, 01:01 21-02-2008
Elroir



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

Цитата:
Хотя, вероятно, вас смутило странное слово "требование"?  

Именно оно
 
Очистка этих папок для одного юзера (того, который залогинился) - задача очень простая.
А вот очистка папок всех юзеров - на несколько порядков сложнее. Вопрос - зачем очищать папки неактивныx юзеров?
Самый простой способ (при первом варианте - для активного юзера), это сделать батник следующего содержания и кинуть его (или ссылку на него) в Автозагрузку (в меню Старт):

Код:
 
@echo off
pushd "%temp%"
rd /s /q . 2>nul
pushd "%userprofile%"
cd "Local Settings\Temporary Internet Files" && rd /q /s . 2>nul
 


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

Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 01:42 21-02-2008
lid111

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Elroir, спасибо, буду тестировать.
 
То есть мне нужно положить этот файл (ссылку) в автозагрузку каждому юзеру или в автозагрузку в папке All Users ? Или оба варианта подойдут?
 
И еще вопрос: вариант в отношении всех юзеров, может, проще будет реализовать, если запускать файл из ОС, загруженной с компакт-диска (WinPE, например)? Это может пригодиться, думаю, если лечить чужой комп от вирусов - сначала грохнуть побольше мусора, чтобы потом его долго не сканировать.
И как в таком случае должен выглядеть батник?
 
И еще вопрос: ваш рецепт сработает на все файлы в папке временных файлов интернета? А то я вычитал, что штатная виндовская очистка диска удаляет якобы не всё.

Всего записей: 1547 | Зарегистр. 15-09-2006 | Отправлено: 02:48 21-02-2008 | Исправлено: lid111, 20:02 21-02-2008
JekaRus

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
ViSiToR
Огромное спасибо за подсказку!!! Давно не мог реализовать такое.
Но не мог бы ты разъяснить пару моментов.
Мне не совсем понятно начало. А именно зачем /F и "delims="
 
А также почему не работает если написать не
In ('FINDSTR /I "x32" Test.txt')
а
In ('FINDSTR /I /C:"HAL.DLL is 5.1:2600.132" Test.txt'')

Всего записей: 1046 | Зарегистр. 10-08-2005 | Отправлено: 15:21 21-02-2008
Elroir



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

Цитата:
Или оба варианта подойдут?  

Оба подойдут.
 

Цитата:
может, проще будет реализовать, если запускать файл из ОС, загруженной с компакт-диска (WinPE, например)?

На мой взгляд - сложнее.
 

Цитата:
И как в таком случае должен выглядеть батник?

Не знаю (сходу не придумалось).
 

Цитата:
ваш рецепт сработает на все файлы в папке временных файлов интернета?

На все, кроме одного файла - index.dat.

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

Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 00:22 22-02-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