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

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



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

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

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

Всего записей: 12952 | Зарегистр. 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

Всего записей: 2427 | Зарегистр. 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.

Всего записей: 1023 | Зарегистр. 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 при включении или при выключении (что лучше?) компьютера.

Всего записей: 1437 | Зарегистр. 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.

Всего записей: 1437 | Зарегистр. 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, например)? Это может пригодиться, думаю, если лечить чужой комп от вирусов - сначала грохнуть побольше мусора, чтобы потом его долго не сканировать.
И как в таком случае должен выглядеть батник?
 
И еще вопрос: ваш рецепт сработает на все файлы в папке временных файлов интернета? А то я вычитал, что штатная виндовская очистка диска удаляет якобы не всё.

Всего записей: 1437 | Зарегистр. 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'')

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



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

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

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

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

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

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

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

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

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

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

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

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

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

НУ, может быть, как-нибудь не с ходу, если будет время, желание, было бы неплохо... Можно мне в PM.

Всего записей: 1437 | Зарегистр. 15-09-2006 | Отправлено: 01:44 22-02-2008
ViSiToR



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

Цитата:
зачем /F и "delims="

Читаем справку по командной строке:
 

Цитата:
For /? > ...
...
По умолчанию ключ /F выделяет из каждой строки файла
 первое слово, очищенное от окружающих его пробелов. Пустые строки
 в файле пропускаются. Необязательный параметры "ключи" служит для
 переопределения заданных по умолчанию правил обработки строк. Ключи
 представляют собой заключенную в кавычки строку, содержащую указанные
 параметры. Ключевые слова:
 
     eol=c           - определение символа комментариев в конце строки
                       (допускается задание только одного символа).
     skip=n          - число пропускаемых при обработке строк в начале
                       файла.
     delims=xxx      - определение набора разделителей для замены заданных
                       по умолчанию пробела и знака табуляции.
...
...

 

Цитата:
А также почему не работает если написать не  
In ('FINDSTR /I "x32" Test.txt')  
а  
In ('FINDSTR /I /C:"HAL.DLL is 5.1:2600.132" Test.txt'')

Хотябы потому, что используется лишняя одиночная  кавычка на конце строки
 

Код:
...In ('FINDSTR /I /C:"HAL.DLL is 5.1:2600.132" Test.txt')


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

Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 16:54 22-02-2008
Elroir



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
lid111
Даже подумав, не буду это делать, но объясню почему:
С директориями Temporary Internet Files все просто, а вот директория Temp у каждого пользователя может находится где угодно. Выяснить где она находится, из командой строки, не загружая операционную систему самой машины - невозможно (ну... возможно, конечно, но СЛОЖНО). Поиск всех директорий с названиями "Тemp" ничего не даст, так как многие программы используют подобные директории.

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

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



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
JekaRus
 
Вот немного расширенный пример:
 

Код:
@Echo Off
 
Set File=Test.txt
Set Line=HAL.DLL is 5.1:2600.132
 
If Not Exist "%File%" Call :Error "File <%File%> Not Found"
 
For /F "delims=" %%i In ('FINDSTR /I /C:"%Line%" "%File%"') Do Set Var=%%i
If "%Var%"=="" Call :Error "Line <%Line%> Not found in file <%File%>."
 
GoTo %Var:~-2%
 
Call :Error "Line <%Line%> Not found in file <%File%>."
 
:32
Echo Ok, Line ^<%Line%^> found in file ^<%File%^>.
Exit 0
 
 
 
:Error
Echo There was an error [%1]
Exit 1

 
Добавлено:
Elroir

Цитата:
директория Temp у каждого пользователя может находится где угодно. Выяснить где она находится, из командой строки, не загружая операционную систему самой машины - невозможно (ну... возможно, конечно, но СЛОЖНО).

Хм... а переменная %Temp%? зачем искать всевозможные папки, “официальная” находится именно в этой переменной, всё остальное, обычные папки

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

Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 17:30 22-02-2008
Elroir



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

Цитата:
Хм... а переменная %Temp%?

Ключевая фраза в моем ответе - "не загружая операционную систему самой машины".
Человек хочет удалить все темп директории, загрузившись с компакт-диска.


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

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



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

Цитата:
Wise_Kaa  
 
Цитата:Может быть можно как-то перенаправить выводимое сообщение в переменную?  
 
 
Можно.  
 
Цитата:Вообще задача такая, если процесс с указанным именем не найден, то перейти по метке.  
 
 
Покажи вывод команды tlist (только полностью), когда процесс найден и когда не найден

 
Elroir ,вот
 

Цитата:
 
C:\>tlist -p cmd
5388
 
C:\>tlist -p abra-cadabra
-1
 

Всего записей: 59 | Зарегистр. 04-01-2006 | Отправлено: 18:50 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.Board
© Ru.Board 2000-2020

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru