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

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

Автор: Norhard
Дата сообщения: 01.03.2016 13:01
ipmanyak
Сделал тестовый:

Код: @echo off
set datetemp=%date:~-10%
set data=02.03.2016
if %datetemp% == %data% (goto :kay) ELSE ( goto :kddd )
:kay
echo Выполнено
pause
exit
:kddd
echo Нет
pause
exit
Автор: ipmanyak
Дата сообщения: 01.03.2016 14:47
Norhard Имей ввиду, формат даты зависит от региональных настроек винды, если настройка будет другая, формат даты будет другой и батник не будет работать как надо.
Автор: H48as
Дата сообщения: 01.03.2016 16:18
del
Автор: Norhard
Дата сообщения: 01.03.2016 17:23
ipmanyak Как то не подумал об этом. Учту, спасибо.
Дата в моем файле-однодневке все равно будет редактироваться перед каждым применением. Если что, подправить не составит труда.
Автор: imsorry
Дата сообщения: 01.03.2016 17:34
Я дико извиняюсь... давно затрагивалась тема реестр через WIMC

В Сети глухо с инфой. Может кто подкинет образец-другой?
.
Автор: bifido76
Дата сообщения: 01.03.2016 21:22
imsorry
В конце статьи приводится пример работы с реестром через класс StdRegProv
http://www.robvanderwoude.com/wmic.php
А здесь все методы данного класса -
https://msdn.microsoft.com/en-us/library/windows/desktop/aa393664%28v=vs.85%29.aspx
Автор: imsorry
Дата сообщения: 01.03.2016 21:49
bifido76
* В конце статьи приводится пример работы с реестром через класс StdRegProv
О! Спасибо! Я эту ссыль уже несколько раз обхаживал, но все по "WIMC REG"
Зевнул именно нужное...

А почему WIMC REGISTRY не практикуется совсем?
.


Добавлено:
Заработало вот так:


Код: WMIC %sNamSpc% Call GetStringValue hDefKey=%HKCU% sSubKeyName=%sKey% sValueName="StrVal"
Автор: bifido76
Дата сообщения: 01.03.2016 22:31
imsorry
А там автор статьи и пишет почему - "Можно использовать WMIC для того, чтобы читать, записывать и удалять ключи и значения в реестре, но я не рекомендую это делать, так как это занятие не для слабонервных. REG.EXE использовать намного легче."
Автор: imsorry
Дата сообщения: 01.03.2016 22:37
bifido76
Дык, я это тоже прочитал :) Поэтому, честно говоря, отчаялся там найти что-то полезное. Тем более, что ключевое слово выбрал неверно...

Я с удовольствием бы использовал Reg или любую другую консольку,
но ни одна из них не работает с экспортирует выборочнымие values.
Ближайший приемлемый вариант - парсить выдачу Reg через For :(((
.
Автор: bifido76
Дата сообщения: 01.03.2016 22:51
imsorry
Ну, так и здесь похоже тоже надо парсить.
Автор: imsorry
Дата сообщения: 01.03.2016 22:56
bifido76
Епт...
т.е. думаешь, что эту sValue по-человечески не вытащить?
Автор: bifido76
Дата сообщения: 01.03.2016 23:00
imsorry
Угу, это же батники
Автор: imsorry
Дата сообщения: 01.03.2016 23:03
Я когда прочитал описалово по второй твоей ссылке, так наоборот обрадовался - что передашь в нее переменную, а она сама ее и заполнит...

Добавлено:

Код: uint32 GetStringValue(
[in] uint32 hDefKey = HKEY_LOCAL_MACHINE,
[in] string sSubKeyName,
[in] string sValueName,
[out] string sValue
);
Автор: bifido76
Дата сообщения: 01.03.2016 23:08
imsorry
Всегда, когда работал с WMIC приходилось парсить выдачу. Никогда по-человечески не получалось. Подожди попробую проэкспериментировать.
Автор: imsorry
Дата сообщения: 01.03.2016 23:14
bifido76

Цитата:
Подожди попробую проэкспериментировать.

Спасибо! Я-то щаз в оффлайн... голова ужЕ одурела.

Я уже и так и эдак изгалялся. И объявлял пустую, и подставлял с % и с !. Кстати, WMIC ее видит только с !. И имя ей менял. Банан...
.

Добавлено:
На языке-то они так и делают:

Код: oReg.GetStringValue HKEY_LOCAL_MACHINE, strFullKeyPath, strValueName, szValue
Автор: bifido76
Дата сообщения: 01.03.2016 23:45
imsorry
И то и другое нужно парсить. Другого пути не нашел. А проще в данном случае парсить reg query -
Код: set "sKey=HCKU\и.т.д"
for /f "tokens=3 delims= " %%a in ('reg query "%sKey%" /v "StrVal"') do if not defined val set val=%%a
echo "%val%"
Автор: imsorry
Дата сообщения: 02.03.2016 02:32
bifido76
Что ж... сказано "парсить!", значит будем парсить...
Спасибо за помощь, а то бы я весь загуглился и время потерял в надежде передать ее.

Конечно, я тогда вернусь к Reg. Хотя...

... есть у меня одна левая [more=консолька]Overview of Commands

This is an alphabetic list the list of valid commands which can be passed to RRC.EXE. For general information on commands and parameters using Registrar Command Line Edition, read Using the command line interface.

Command Purpose
Backup Backup the entire registry
CompareKey Tests if the contents of two registry keys are equal
CopyKey Copies a registry key and its contents to another key
CopySecurity Copies the security information from one registry key to another
CopyValue Copies a registry value to another key
CreateKey Create a registry key
DeleteValue Delete a registry value
EditAuditing Brings up graphical auditing editor for a specified registry key
EditPermissions Brings up a graphical registry permissions editor for a specified registry key
Export Export a registry key to a .reg file
GetAuditing Retrieves auditing settings for a registry key
GetKeyInfo Display registry key info
GetOwnership Displays ownership information
GetPermissions Retrieves permission settings for a registry key
GetValue Displays the contents of a registry value, optionally stores it in a file
Import Import a Regedit compatible registration file
KeyExists Checks if a registry key exists
ListMachines Displays all available systems on the network
ListSubKeys Lists the subkeys of a specified registry key.
ListUsers Displays the registered users on the network
ListValues Displays the available systems on the network
LoadKey Load a registry hive file directly under HKLM or HKU
MoveKey Moves a registry key and its contents to another key
MoveValue Moves a registry value to another key
Register Obtain user or system licenses on our website
RenameKey Renames a registry key
RenameValue Renames a registry value
Restore Restore the entire registry from a previously made backup
RestoreKey Load a registry hive file at a specified location
SaveKey Save a registry key and its subkeys to a registry hive file
Search Search registry for specified text and optionally replace or delete mtching keys and values.
SetAuditing Changes registry key auditing on a key for a specified user
SetPermissions Changes registry key permissions on a key for a specified user
SetValue Sets a registry value, optionally reads the contents from a file
Shutdown Shuts down and reboots a computer
Support Send an email to Resplendence technical support
TakeOwnership Take ownership of a registry key
Update Check for a later version of Registar Command Line Edition
ValueExists Checks if a registry value exists
Website Visit Resplendence website [/more]
rrc.exe getValue hkcu\KeyName\\ValueName /noComments /noCopyright

Выдает
Text Text

Но так хотелось обойтись встроенными средствами...
.

Автор: dstormclone
Дата сообщения: 02.03.2016 16:04
доброго времени
нужно искать и удалять спецпапки со всем содержимым
папки которую следует удалять ДОЛЖНЫ соответствовать определенным требованиям, а именно: должна быть выполнена определенная вложенность папок
задачу собственно почти добил, батник:

for /F %%i in ('dir c:\ /A:D /B /S ^| find "tester\info\go"') do rmdir /s /q %%i

однако если например папка содержит пробелы, например такое вложение
с:\папка с пробелами\tester\info\go -то соответственно ничего не удаляется
с:\папкаБЕЗпробелов\tester\info\go -все прекрасно работает

укажите пожалуйста где неточность в батнике

---------------------------------------------
upd все спасибо вопрос вроде бы добил

for /F "delims=" %%i in ('dir c:\ /A:D /B /S ^| find "tester\info\go"') do rmdir /s /q "%%i"
Автор: Pasha_ZZZ
Дата сообщения: 02.03.2016 17:14
dstormclone в конце %%i попробовать заменить на "%%~i" или "%%~fi"
Автор: bob_plus
Дата сообщения: 02.03.2016 23:47
Просвещенные!
Кто-нибудь может подсказать как создать из командной строки задание не имеющее триггера, т..е. что нужно вставить вместо вопросов в ниже написанную строку:

schtasks /create /s %USERDOMAIN% /ru "NT AUTHORITY\LOCALSERVICE" /sc ????? /f /tn "ad" /tr %SystemRoot%\system32\cmd.exe /rl highest

Уж мозг окончательно вынес.. Задача используется для запуска через /run для запуска CMDшника опосредовано с помощью планировщика. Такая же задача созданная в консоли Планировщика экспортированная в XML выглядит так:

<?xml version="1.0" encoding="UTF-16"?>
<Task version="1.2" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
<RegistrationInfo>
<Date>2016-02-29T14:26:27.7736342</Date>
<Author>bobinter\sysadmin</Author>
</RegistrationInfo>

<Triggers /> - здесь триггера ЙОК !!!!

<Principals>
<Principal id="Author">
<UserId>bobinter\sysadmin</UserId>
<LogonType>InteractiveToken</LogonType>
<RunLevel>HighestAvailable</RunLevel>
</Principal>
</Principals>
<Settings>
<MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
<DisallowStartIfOnBatteries>true</DisallowStartIfOnBatteries>
<StopIfGoingOnBatteries>true</StopIfGoingOnBatteries>
<AllowHardTerminate>true</AllowHardTerminate>
<StartWhenAvailable>false</StartWhenAvailable>
<RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>
<IdleSettings>
<StopOnIdleEnd>true</StopOnIdleEnd>
<RestartOnIdle>false</RestartOnIdle>
</IdleSettings>
<AllowStartOnDemand>true</AllowStartOnDemand>
<Enabled>true</Enabled>
<Hidden>false</Hidden>
<RunOnlyIfIdle>false</RunOnlyIfIdle>
<WakeToRun>false</WakeToRun>
<ExecutionTimeLimit>PT0S</ExecutionTimeLimit>
<Priority>7</Priority>
</Settings>
<Actions Context="Author">
<Exec>
<Command>%SystemsPh%\Special\Control\Services\ServicesEnvironment\startapp1.cmd</Command>
</Exec>
</Actions>
</Task>

Что вставить для опции /sc чтобы не определять триггер!

Челом бью решившему этот для меня орешек!
Автор: Rushmore
Дата сообщения: 03.03.2016 10:14
bob_plus
Создайте XML-шаблон, а потом используйте schtasks /create /xml
Автор: bob_plus
Дата сообщения: 03.03.2016 10:29
Спасибо!
А без xml есть решение?
Автор: Pasha_ZZZ
Дата сообщения: 03.03.2016 10:41
bob_plus
Ну так создайте левый триггер, например ONCE в глубоком прошлом или будущем
Автор: bob_plus
Дата сообщения: 03.03.2016 11:04
уже пробовал, но мне не понравилось...
Но все равно - спасибо!
Автор: Pasha_ZZZ
Дата сообщения: 03.03.2016 11:08
bob_plus
XML не нравится, триггер в прошлом не нравится......
Вам вообще шашечки или ехать?
Автор: urodliv
Дата сообщения: 08.03.2016 18:50
Моё почтение соседям по форуму.
Задача такова. Есть два iso-образа, которые необходимо монтировать в два виртуальных привода на базе Virtual CloneDrive. Монтирование можно сделать через командную строку.
Проблема заключается в том, что если монтировать iso-файл в виртуальное устройство где уже "установлен диск", происходит его "выгрузка", а затем "загружается" нужный iso`шник. Хочется этого избежать.
Возможно ли как-то проверить на занятость виртуальное устройство оптических дисков через командную строку силами операционной системы, так как производитель программы Virtual CloneDrive такого функционала в свои утилиты не заложил?
Автор: imsorry
Дата сообщения: 08.03.2016 19:43
urodliv
>dir x:
The device is not ready.
Автор: urodliv
Дата сообщения: 08.03.2016 20:01
imsorry
Элегантно!
Автор: imsorry
Дата сообщения: 08.03.2016 20:08
urodliv
Я дико извиняюсь... это не я. Это Билл.

Добавлено:
Ну, там могут быть проблемы с локалью, но тебе же для себя, а не в дистрибуцию...
Автор: urodliv
Дата сообщения: 08.03.2016 20:25
imsorry

Цитата:
Ну, там могут быть проблемы с локалью, но тебе же для себя, а не в дистрибуцию...

Главное идея, остальное - дело техники. Я буду ориентироваться на "серийный номер тома", а он включает в себя только аглицкие буквы. Так что прорвёмся. Спасибо.

Страницы: 123456789101112131415161718

Предыдущая тема: Не устанавливаются обои на рабочий стол (Windows 2003 x64)


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