Ru-Board.club
← Вернуться в раздел «Microsoft Windows»

» Задачи на bat-файлах 7

Автор: egor23
Дата сообщения: 05.12.2009 19:02
01MDM

Цитата:
Вопрос некорректен. Что, откуда и куда?

изначальная задача:
1. получаем значение переменной %NUMBER_OF_PROCESSORS%
2. проверяем, что там цифра, а не "мусор" (на всякий случай)
вот с мусором и загвоздка со спец. символами :;"^%'' и т.п.
Автор: mugil_cephalus
Дата сообщения: 05.12.2009 19:22
egor23

Цитата:
перефразирую
как работает параметр @ ?


CMDOW [window | /T] [/B] [/F] [/P]


window Window to list. If not specified all windows are listed. Specify a window by its unique handle in hexadecimal format (0x1A0142) or its caption (case insensitive). Windows without captions may be specified by their ClassName. The At symbol '@', may be used to refer to this window ie 'CMDOW @'. Use double quotes for captions containing whitespace or control characters.

http://www.commandline.co.uk/cmdow/index.html

http://www.computerra.ru/gid/rtfm/system/272855/

p.s.
хотя мне казалось, что определяется через окно в фокусе - winAPI32 active_window
( http://firststeps.ru/mfc/winapi/win/r.php?29 )

Добавлено:
01MDM

Цитата:
Для примера реализация прогресс-бара с помощью ansicon:



Цитата:
Кому интересно, тот оценит.

Кроме того можно организовать цветастую cmd


интересно посмотреть - когда будет время (скачаю ansicon.exe и sleep) обязательно посмотрю скрипт



Автор: 01MDM
Дата сообщения: 05.12.2009 21:52
egor23
Поскольку легче всего проверить через findstr, то этим методом и будем пользоваться. Но. Здесь есть одна "засада". Если перенаправлять значение на вход findstr посреством `echo', то есть большая вероятность ошибки. Например:

Код:
set "_N=^4"
echo %_N% | findstr "<условие>"
Автор: Smitis
Дата сообщения: 05.12.2009 22:59
01MDM

Цитата:
Поэтому лучше выводить на проверку через `set':

На самом деле команда set _N выведет не значение переменной _N, а значения всех переменных, начинающихся на _N. Т.о., результат может оказаться некоректным.
Автор: DEN1165
Дата сообщения: 06.12.2009 11:29

Подскажите как правильно использовать /exclude
а то вот так что-то не получается


Код:
xcopy "%fromDir%" "%toDir%" /f /d /i /s /e /k /r /h /y /exclude ".exe"
Автор: mugil_cephalus
Дата сообщения: 06.12.2009 12:35
DEN1165
Синтаксис
xcopy источник [результат] [/w] [/p] [/c] [/v] [/q] [/f] [/l] [/g] [/d[:мм-дд-гггг]] [/u] [/i] [/s [/e]] [/t] [/k] [/r] [/h] [{/a|/m}] [/n] [/o] [/x]
[/exclude:файл1[+[файл2]][+[файл3]] [{/y|/-y}] [/z]

Указывает список файлов, содержащих строки. Каждая строка
должна находиться в отдельной линии в файлах. Если одна из
строк совпадает с любой частью абсолютного пути копируемого
файла, то такой файл копироваться не будет. Например,
указывание таких строк, как \\obj\\ или .obj, исключает
из копирования все файлы в папке obj и, соответственно, все
файлы с расширением .obj.


попробуй - /exclude:.exe
Автор: Demon L
Дата сообщения: 06.12.2009 14:05
Помогите, пожалуйста....
Как решить такую задачу:
есть папка "IN" в ней папки вида "01 Январь" "02 Февраль" итд. В папку "IN" постоянно падают файлики *.msg. Нужно раскладывать файлики по дате создания... но так чтоб не учитывать год (для того чтоб получилось универсально)
То есть нужно чтоб файлы которые появились, скажем в январе, оказались в папке "01 Январь" и при этом имя папки куда должен в итоге попасть файл должно определятся только по первым двум цифрам в данном случае "01" и не обращать внимания на остальное название папки (потому как вместо "Январь" там может быть все чт угодно)...
Автор: mugil_cephalus
Дата сообщения: 06.12.2009 14:10
wolf0425
ты тут n страниц назад спрашивал что-то (не помню) про localtime, я сейчас читал/копался в help, наткнулся - м.б. тебе подойдет (не знаю) - вот такое:
F:\Documents and Settings\admin>w32tm /tz
Часовой пояс: Текущий:TIME_ZONE_ID_STANDARD Сдвиг: -180мин (UTC=LocalTime+Bias)
[Зимнее время:"Московское время (зима)" Сдвиг:0мин ДатаM:10 D:5 DoW:0)]
[Летнее время:"Московское время (лето)" Сдвиг:-60мин ДатаM:3 D:5 DoW:0)]
Автор: 01MDM
Дата сообщения: 06.12.2009 15:30
Smitis

Цитата:

set _N выведет не значение переменной _N, а значения всех переменных, начинающихся на _N.

Переменная уникальна, в системе созвучной нет. К тому же это просто пример.
Автор: mugil_cephalus
Дата сообщения: 06.12.2009 15:38
а если я из папки sys32 удалю в GUI systeminfo.exe, а потом в CLI выполню sfc (с синтаксисом, думаю, разберусь сам) - то в папке снова появится полноценный systeminfo.exe - я правильно понимаю?
Автор: Craager
Дата сообщения: 06.12.2009 18:34
Разве никто до сих пор не придумал способ удаления всего содержимого папки (файлы, подкаталоги чтобы удалялись все), чтобы она полностью пустая стала?
Автор: milair
Дата сообщения: 06.12.2009 19:15
Народ! Ткните носом, простенькая задачка, а лоб морщу целый день:
требуется рестартонуть приложение и закрыть за собой ком-окно:
@echo off
taskkill /f /im Notepad.exe
notepad.exe

на примере блокнота, сами можете убедится в этой увлекательной задачке
Автор: GORA2
Дата сообщения: 06.12.2009 19:37
milair

Код: @echo off
taskkill /f /im Notepad.exe
Start "" notepad.exe
Автор: NIKZZZZ
Дата сообщения: 06.12.2009 20:14
Craager

Цитата:
способ удаления всего содержимого папки


Код: RD /S /Q Папка
MD Папка
Автор: Craager
Дата сообщения: 06.12.2009 20:26
NIKZZZZ
это не совсем то, что нужно. Приведённая команда удаляет всю папку и создаёт её заново, а без удаления нельзя разве?? Вроде простейшая операция, а скрипта до сих пор нет ((
Автор: 01MDM
Дата сообщения: 06.12.2009 20:38
Craager
А какая разница? Удаляй ее содержимое из самой папки:

Код:
pushd D:\Test && 2>nul rd /s /q "."
popd
Автор: Eggorka
Дата сообщения: 06.12.2009 21:09
Помогите, пожалуйста, с проблемой. Задача. Надо из папки D:\IN\ скопировать в папку D:\OUT\ все файлы, причём если в папке D:\OUT\ уже присутствуют файлы с такими же именами -- переименовать новые, добавив к имени, скажем, 1. Пример. Папка IN содержит файлы aaa.txt bbb.txt ccc.zip ddd.rar, папка OUT -- файлы aaa.txt ddd.rar eee.exe. Результатом операции должен стать каталог D:\OUT\, содержащий файлы aaa.txt aaa1.txt bbb.txt ccc.zip ddd.rar ddd1.rar eee.exe.
Автор: Craager
Дата сообщения: 06.12.2009 21:34

Цитата:
Код:

pushd D:\Test && 2>nul rd /s /q "."
popd


Спасибо! Это как раз то, что нужно! Удаление содержимого всей папки: файлов, каталогов и подкаталогов (сама папка, в которой это всё происходит, при этом остаётся нетронутой).
Автор: Smitis
Дата сообщения: 06.12.2009 23:26
01MDM

Цитата:
Переменная уникальна, в системе созвучной нет. К тому же это просто пример

Вот из-за таких допущений, типа "это никогда не может произойти" и возникают глупые ошибки. Сегодня переменной нет, а через год забылось и переменная появилась. Да и другие из-за таких примеров потом страдают
Автор: seregaknorrr1
Дата сообщения: 07.12.2009 01:01
Как выполнить следующее. Нужно провести проверку на наличие подключенного vpn соединения и если оно не подключено то тогда отключить сетевое подключение (lan) (это можно сделать с помощью devcon disable "hardware id"), выждать паузу в секунд 10 и подключить сетевое подключение обратно (devcon enable "hardware id") ?

Возможно есть более простой вариант добиться чего я хочу. Требуеться полностью автоматизировать подключение удаленного компьютера к интернету,а в результате сбоя - переподключение. Подключение к интернет осуществляеться через VPN. Я прописал впн как сервис и каждый раз при включении компьютера оно подключаеться автоматически без проблем. Но иногда впн отваливается и переподключение не может быть установлено авто-передозвоном (прописанным в свойствах подключения) из за ошибки 769. В таком случае приходиться перезагружать компьютер и впн подключается успешно. Вопрос в том что как это организовать автоматом без участия юзера (который в это время не находиться за компьютером). Я уверен что после перезапуска локального сетевого подключения ВПН соединился бы без проблем, но не знаю как все это реализовать...
Автор: yurkesha
Дата сообщения: 07.12.2009 06:14
Smitis
Тогда дополнение: set _N заменяем на set _N|findstr /b /i "_N="
Полный вариант такой:
Код: set "_N=4^"
set _N|findstr /b /i "_N="| 1>nul findstr ".*=[0-9]$" && echo true || echo invalid
Автор: Smitis
Дата сообщения: 07.12.2009 09:32
yurkesha
Это выход
Автор: 01MDM
Дата сообщения: 07.12.2009 09:44
Smitis
Можно специально для проверки выдумать действительно уникальную переменную:

Код:
@echo off
setlocal

set "P=^4"
set "UniqueVariable=%P%"
set UniqueVariable | findstr ".*=[0-9]$" && echo true || echo invalid
Автор: MothROM2
Дата сообщения: 07.12.2009 10:14
Всем привет, помогите с задачкой:
Скрипт, должен заблокировать всех локальных пользователей на ПК, кроме локального админа, а ему самому сменить пароль.
Автор: Mr_Hat
Дата сообщения: 07.12.2009 11:00
MothROM2
Не стану помогать тебе, не ясны твои мотивы.
запрос уж больно похож на скрипт для какого то порно банера блокирующего систему.
Автор: 01MDM
Дата сообщения: 07.12.2009 11:35
MothROM2
Скрипт потенциально опасен. Поэтому не поделюсь.
Автор: mugil_cephalus
Дата сообщения: 07.12.2009 11:52
может кто -нить подскажет про sfc

Цитата:
а если я из папки sys32 удалю в GUI systeminfo.exe, а потом в CLI выполню sfc (с синтаксисом, думаю, разберусь сам) - то в папке снова появится полноценный systeminfo.exe - я правильно понимаю?

Автор: MothROM2
Дата сообщения: 07.12.2009 13:10
Проясню ситуацию, все компьютеры находятся в домене, пользователи тоже доменные, локальных пользователей быть не должно, пароль у локального админа во избежание должен меняться довольно часто.

Скрипт будет выполняться в групповой логон-политике. Я вообще представляю как сделать с помощью внешних утилит эту процедуру, но пока не нашел как скрыть пароль в скрипте. А если удаленно менят пароль то во первых перебор рабочих станций по списку это долго, а во вторых они не всегда включены, т.е. процедуру надо повторять как минимум несколько раз, чтобы охватить все станции.
Автор: AnGo
Дата сообщения: 07.12.2009 15:06
Подскажите, как вывести в файл символ новой строки?
Нужен для формирования пустой строки при форматировании вывода из bat-файла.
Thnx!
Автор: yurkesha
Дата сообщения: 07.12.2009 15:17
AnGo
Код: ECHO.

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778

Предыдущая тема: во вкладке автозагрузка


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.