Форум программистов, компьютерный форум, киберфорум
PowerShell
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/29: Рейтинг темы: голосов - 29, средняя оценка - 4.69
0 / 0 / 0
Регистрация: 27.12.2014
Сообщений: 28

Сумма числовых переменных среды Windows

16.01.2020, 13:02. Показов 5792. Ответов 18

Студворк — интернет-сервис помощи студентам
Если рассматривать список числовых значений переменных среды Windows, он выводится приблизительно таким образом:
PowerShell
1
gci env:* | sort-object name
То как "просуммировать все числовые значения переменных среды"?

Ругается на то, что аргумент не является числом, а строкой, ну тут все понятно, не могу найти приведения типа для данного задания
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.01.2020, 13:02
Ответы с готовыми решениями:

Разработать файл сценария для вывода информации о переменных среды Windows в файл
Всем здрасьте, помогите разобраться с заданием. Есть PowerShell , как я понял это аналог cmd в винде , только в винду его добавили из...

Вывод информации в файл о переменных среды Windows
Помогите

Разработать пакетный файл для вывода информации в файл о переменных среды Windows в таблицу
Добрый день, не могу понять как вывести информацию о переменных окружения Windows в файл , чтобы он был в виде таблицы, преподаватель...

18
 Аватар для alhaos
1929 / 545 / 154
Регистрация: 20.02.2019
Сообщений: 2,664
Записей в блоге: 65
16.01.2020, 13:46
PowerShell
1
2
$ErrorActionPreference='SilentlyContinue'
((((Get-ChildItem env:*).Value).ForEach{[int]$_}) | Measure-Object -Sum).Sum
пля, все больше и больше мой код на Brainfuck становится похож
0
Покинул форум
3701 / 1484 / 355
Регистрация: 07.05.2015
Сообщений: 2,903
16.01.2020, 13:52
alhaos, не учите плохому.
PowerShell
1
[Linq.Enumerable]::Sum([Double[]](Get-ChildItem env:).Value.Where{$_ -as [Double]})
0
 Аватар для alhaos
1929 / 545 / 154
Регистрация: 20.02.2019
Сообщений: 2,664
Записей в блоге: 65
16.01.2020, 14:13
Цитата Сообщение от greg zakharov Посмотреть сообщение
не учите плохому.
хорошо
PowerShell
1
((Get-ChildItem env:*).Value.Where{$_ -match '^\d+$'} | Measure-Object -Sum).Sum
0
Покинул форум
3701 / 1484 / 355
Регистрация: 07.05.2015
Сообщений: 2,903
16.01.2020, 15:15
alhaos, полагаю, вы затеваете спор по части производительности, не так ли? Что ж... Ваш пример нескольким производительней в виду отсутствия оператора -as. Однако давайте еще более глубоко помозгуем. Поиск по регулярке был бы гораздо производительней, ежели она была представлена как ^\d (нашли совпадение в начале строки, не тратим время на соответствие регулярке прочих символов). Гонять через пайп можно, но...почему бы не ссумировать числа параллельно. На примере:
PowerShell
1
2
3
4
5
6
7
time {
  ((Get-ChildItem env:*).Value.Where{$_ -match '^\d+$'} | Measure-Object -Sum).Sum
}, {
  [Linq.ParallelEnumerable]::Sum([Linq.ParallelEnumerable]::AsParallel([Int32[]](Get-ChildItem env:).Value.Where{$_ -match '^\d'}))
}, {
  ((Get-ChildItem env:).Value.Where{$_ -match '^\d'} | Measure-Object -Sum).Sum
}-Count 1000
Вывод:
PowerShell
1
2
3
Total ms: 17461.1072
Total ms: 7797.5296
Total ms: 8391.3663
1
 Аватар для alhaos
1929 / 545 / 154
Регистрация: 20.02.2019
Сообщений: 2,664
Записей в блоге: 65
16.01.2020, 15:21
Цитата Сообщение от greg zakharov Посмотреть сообщение
полагаю, вы затеваете спор по части производительности
целью не ставил, но это я всегда "За" )))

Цитата Сообщение от greg zakharov Посмотреть сообщение
ежели она была представлена как ^\d
Хм... или я чего то не понимаю "10" уже не попадает, клиент заказывал "числовых" а не "цифирные" переменные.

производительность linq я не оспариваю, я им еще пользоваться не умнею ))))
0
Покинул форум
3701 / 1484 / 355
Регистрация: 07.05.2015
Сообщений: 2,903
16.01.2020, 15:31
PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
E:\sandbox
[56] λ $env:dec = 10
 
E:\sandbox
[57] λ (Get-ChildItem env:).Value.Where{$_ -match '^\d'}
10
3,14159265358979
...
 
E:\sandbox
[58] λ Get-ChildItem env:dec
 
Name                           Value
----                           -----
dec                            10
А вот если задать:
PowerShell
1
$env:hyb = '2str'
То, да, '^\d' идет лесом. Правда при '^\d+$' теряются числа с плавающей точкой. А если учесть, что операция разовая, то есть не будет гоняться в цикле, скорость исполнения не критична. Поэтому лучше придерживаться в данном случае оператора -as.
0
 Аватар для alhaos
1929 / 545 / 154
Регистрация: 20.02.2019
Сообщений: 2,664
Записей в блоге: 65
16.01.2020, 15:35
согласен неудачный пример привел, вот есть у меня такая переменная, да и мало ли может быть переменных которые с цифры начинаются, можно такое допустить, но нужно полагаться, что оно будет отрабатывать на наших данных

PROCESSOR_REVISION=2a07

Добавлено через 2 минуты
Цитата Сообщение от greg zakharov Посмотреть сообщение
То, да, '^\d' идет лесом. Правда при '^\d+$' теряются числа с плавающей точкой.
думаю тут пора остановиться...
0
Покинул форум
3701 / 1484 / 355
Регистрация: 07.05.2015
Сообщений: 2,903
16.01.2020, 15:54
Цитата Сообщение от alhaos
думаю тут пора остановиться...
Все это в сущности объяснение тому, почему был выбран оператор -as, а не использовано регулярное выражение, а также задействован Sum, а не Measure-Object, из-за которого код приближается по синтаксису Lisp.

Не по теме:

К слову, в одном из моих модулей есть акселератор [Sum]:

PowerShell
1
[sum](Get-ChildItem env:) #выводит сумму всех чисел в коллекции

0
 Аватар для alhaos
1929 / 545 / 154
Регистрация: 20.02.2019
Сообщений: 2,664
Записей в блоге: 65
16.01.2020, 16:02
Цитата Сообщение от greg zakharov Посмотреть сообщение
К слову, в одном из моих модулей есть акселератор [Sum]:
PowerShellВыделить код
1
[sum](Get-ChildItem env #выводит сумму всех чисел в коллекции
у меня нет

PowerShell
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
PowerShell 7.0.0-preview.1
Copyright (c) Microsoft Corporation. All rights reserved.
 
https://aka.ms/pscore6-docs
Type 'help' to get help.
 
PS C:\> [sum](1,2,3)
Unable to find type [sum].
At line:1 char:2
+ [sum](1,2,3)
+  ~~~
+ CategoryInfo          : InvalidOperation: (sum:TypeName) [], RuntimeException
+ FullyQualifiedErrorId : TypeNotFound
 
PS ***$PSVersionTable
 
Name                           Value
----                           -----
PSVersion                      7.0.0-preview.1
PSEdition                      Core
GitCommitId                    7.0.0-preview.1
OS                             Microsoft Windows 10.0.15063
Platform                       Win32NT
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0}
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1
WSManStackVersion              3.0
0
Покинул форум
3701 / 1484 / 355
Регистрация: 07.05.2015
Сообщений: 2,903
16.01.2020, 16:52
alhaos, у вас его и не должно быть. Модуль мой и разрабатывается для персональных целей, в паблике его нет.
0
 Аватар для alhaos
1929 / 545 / 154
Регистрация: 20.02.2019
Сообщений: 2,664
Записей в блоге: 65
17.01.2020, 06:32
Удобно конечно, но в том то и проблема скрипты будут работать только у вас.
0
Любознательный
 Аватар для YuS_2
7406 / 2256 / 360
Регистрация: 10.03.2016
Сообщений: 5,216
17.01.2020, 09:15
Цитата Сообщение от greg zakharov Посмотреть сообщение
Правда при '^\d+$' теряются числа с плавающей точкой.
Имеет смысл дополнить, что не только с плавающей точкой (кстати, тут есть ещё зависимость от UICulture), но и шестнадцатиричные значения, например, тоже выпадут, особенно если они записаны в виде:
Цитата Сообщение от alhaos Посмотреть сообщение
PROCESSOR_REVISION=2a07
т.к. это для PS совсем не число, даже если попытаться его преобразовать. Их придется приводить к виду 0x2a07.
А ещё надо учесть, что в переменной может быть записано не единственное число, а набор...
В общем, для универсальности, имеет смысл ещё помозговать...
0
Покинул форум
3701 / 1484 / 355
Регистрация: 07.05.2015
Сообщений: 2,903
17.01.2020, 16:50
YuS_2, раз уж все доведено до абсудра, давайте сделаем все еще гораздо абсурдней и добавим сюда комплексные числа и прочие системы счисления, например, римкую. Ммм?
0
 Аватар для alhaos
1929 / 545 / 154
Регистрация: 20.02.2019
Сообщений: 2,664
Записей в блоге: 65
17.01.2020, 17:08
Ну настолько свесли все к абсурду, нам не дадут ограничения значений переменных сред, которые можно задать.
0
Любознательный
 Аватар для YuS_2
7406 / 2256 / 360
Регистрация: 10.03.2016
Сообщений: 5,216
18.01.2020, 14:51
Цитата Сообщение от greg zakharov Посмотреть сообщение
добавим сюда комплексные числа и прочие системы счисления
Почему нет? В чем абсурд? Задача обозначена в первом сообщении.
0
 Аватар для volodin661
6796 / 2293 / 348
Регистрация: 10.12.2013
Сообщений: 7,920
18.01.2020, 16:25
не абсурд, если остальные системы счисления имеют свои признаки.
0
Покинул форум
3701 / 1484 / 355
Регистрация: 07.05.2015
Сообщений: 2,903
18.01.2020, 19:15
Цитата Сообщение от YuS_2
Почему нет? В чем абсурд? Задача обозначена в первом сообщении.
Потому что:
Цитата Сообщение от Student1pm13
Ругается на то, что аргумент не является числом, а строкой
Переменные окружения изначально ничего не знают о числах, все они представлены строками.
PowerShell
1
2
$env:i = 10
(ls env:i).value.gettype().name
Возвращается String, а если включить мозг, задача четко не обозначена, поэтому приплетение сюда комплексных чисел, систем счисления и иже с ними выглядит по меньшей мере бредом, нежели серьезной аргументацией. И всякая дискуссия по этому поводу бессмысленна. Так что решение вида:
PowerShell
1
iex((ls env:).value -match '^\p{N}+$' -join '+')
Можно вполне за решение не считать.
0
 Аватар для alhaos
1929 / 545 / 154
Регистрация: 20.02.2019
Сообщений: 2,664
Записей в блоге: 65
20.01.2020, 07:17
Задача "просуммировать все числовые значения переменных среды", можно выключить мозг и включить фантазию и дать самые вольные определения понятию числовые, суммировать и наверное даже значения и даже переменные среды...
А нет стоп мы уже этим занимаемся.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.01.2020, 07:17
Помогаю со студенческими работами здесь

Использование переменных среды в OpenFileDialog
Добрый вечер. Интересует вопрос - можно ли в классе OpenFileDialog использовать переменные среди в качестве начального адреса для...

Странное поведение переменных среды
Создал переменную окружения mydate запустил CMD файл с содержимым set last=%mydate% set now=%DATE% if %last%==%now% (echo 1)...

Автоматическая установка переменных среды
Доброго времени суток, господа. В общем потихоньку изучаю java и появилась необходимость закинуть на флешку jdk, дабы воткнуть в любой...

Считаем количество переменных среды
нужно создать командный файл который будет считать и выводить количество переменных среды. как это реализовать не представляю. в таком я 0....

Не работает чтение из файла числовых переменных
Добрый день. Написал вот такую программу: #include<conio.h> #include<stdio.h> int main() { int p; FILE...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru