Форум программистов, компьютерный форум, киберфорум
PowerShell
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
 Аватар для K0te1ka
2 / 1 / 0
Регистрация: 11.04.2014
Сообщений: 8

Доступ к значению переменной

06.05.2014, 10:19. Показов 1582. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет! Может кто подскажет по проблеме?
Задача: Имеется txt-файл со всякой фигнёй внутри. Надо среди этой фигни найти имя архива и засунуть его в переменную.
Данный код работает на Win7 PS 3.0, но не работает на WinXP PS 2.0 Вопрос: почему не работает на XP?


Имеется код:
PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
$RESDT = "D:\RESDT_1927_0001_20140505_001.txt"
 
if (!$RESDT -or !(Test-Path -Path "$RESDT") -or $RESDT -eq $NULL){
Write-Host "Не найден RESDT-файл!"
continue} 
    else {
            #Получаем строку, содержащую имя ESDT-архива
            $StringArj = Get-Content -Path "$RESDT" | Where-Object {$_ -match "(ESDT_\d{1,4}_\d{1,4}_\d{1,8}_\d{1,3}.arj)"}
            #Вытаскиваем из этой строки имя ESDT-архива
            $GLOBAL:ArjName = [Regex]::Matches($StringArj,'(ESDT_\d{1,4}_\d{1,4}_\d{1,8}_\d{1,3}.arj)').Value
echo "Имя архива = "$ArjName           
    }
На Win7 PS 3.0 получаем в вывод:
Code
1
2
Имя архива = 
ESDT_1927_0001_20140505_001.arj
На WinXP PS 2.0 получаем в вывод:
Code
1
Имя архива =
Если убрать .Value т.е.
PowerShell
$GLOBAL:ArjName = [Regex]::Matches($StringArj,'(ESDT_\d{1,4}_\d{1,4}_\d{1,8}_\d{1,3}.arj)').Value
Заменить на:
PowerShell
$GLOBAL:ArjName = [Regex]::Matches($StringArj,'(ESDT_\d{1,4}_\d{1,4}_\d{1,8}_\d{1,3}.arj)')
То и на Win7 и на XP получим один и тот же вывод:
Code
1
2
3
4
5
6
7
8
Имя архива = 
 
Groups   : {ESDT_1927_0001_20140505_001.arj, ESDT_1927_0001_20140505_001.arj}
Success  : True
Captures : {ESDT_1927_0001_20140505_001.arj}
Index    : 64
Length   : 31
Value    : ESDT_1927_0001_20140505_001.arj
Получается, что на XP не может обратиться именно к значению Value. Ответьте, кто знает, уважаемые знатоки...
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.05.2014, 10:19
Ответы с готовыми решениями:

Одновременный доступ к значению переменной
Все доброго времени суток. Подскажите как можно решить задачу: Есть 2 приложения: Управляющая программа (УП) и программа клиент...

Доступ к узлу XML файла по значению атрибута. Получения индекса узла по значению
Есть XML файл следующего содержания: <?xml version="1.0" encoding="utf-8"?> <resources> <string...

По значению переменной x (названию сезона) присвоить переменной t соответствующее значение и вывести на экран
Дано описание: Type сезон= (зима, весна, лето, осень); Var x: сезон; t: (тепло, жарко, холодно); По значению переменной x (названию...

3
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18264 / 14189 / 5366
Регистрация: 17.03.2014
Сообщений: 28,876
Записей в блоге: 1
06.05.2014, 17:34
Лучший ответ Сообщение было отмечено K0te1ka как решение

Решение

K0te1ka, метод Matches возвращает коллекцию совпадений (MatchCollection) у которой нет свойства Value. PS3 видимо в этом случае ищет это свойство у элементов коллекции, а PS2 нет. Если ты ожидаешь что в файле должно быть ровно одно вхождение регулярки, то используй метод Match, вместо Matches.
1
Модератор
Эксперт JS
 Аватар для Eva Rosalene
5241 / 2115 / 416
Регистрация: 06.01.2013
Сообщений: 4,846
06.05.2014, 17:53
Или
PowerShell
1
$GLOBAL:ArjName = ([Regex]::Matches($StringArj,'(ESDT_\d{1,4}_\d{1,4}_\d{1,8}_\d{1,3}. arj)'))(0).Value
0
 Аватар для K0te1ka
2 / 1 / 0
Регистрация: 11.04.2014
Сообщений: 8
06.05.2014, 18:47  [ТС]
OwenGlendower, Да. Спасибо! Уже разобрался сам насчёт коллекции совпадений. Действительно, PS3 понимает, что я хочу обратиться к значению каждого элемента коллекции, а PS2 этого не понимает. В итоге, всё закинул в функцию, и перебросил значение Value каждого элемента коллекции в массив. В итоге, функция возвращает массив с именами.
Если кому интересно, то значение каждого элемента коллекции выдёргивал циклом while как $ArjName.get_Item($i).Value
Спасибо всем за ответы!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.05.2014, 18:47
Помогаю со студенческими работами здесь

Присвоение значения одной переменной значению другой переменной
Здравствуйте! При загрузке приложение считывает значения узлов в xml файле (например, IDa="IDa2", IDb="IDb1"). ...

Получить доступ к переменной класса при наличии такого же имени переменной в функции
Например, есть приватная переменная clientName в классе. Также есть точно такая же переменная в конструкторе этого класса. И мне нужно...

Доступ к значению поля в форме
Добрый день. Можно ли в поле формы разрешить доступ только к первым 4 знакам???? Допустим, значение поля "****РОЩЗПА" и надо...

HashMap java доступ по значению
Есть доступ к значению через метод get() по ключу. А если нужно по значению, чтобы вывел ключ, который ему соответствует, как это сделать?...

Доступ к значению по составному имени класса
<div class="form-group"> <label for="inputEmail">Введите email:</label> <input ...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru