Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Скрипт Powershell / 7 сообщений из 7, страница 1 из 1
05.02.2014, 14:47
    #38550345
ioscat
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скрипт Powershell
Есть словарик в файле типа "Петров;Petrov", есть файлики, в которых надо произвести замену. В целом, всё работало, пока я не захотел выводить список необработанных соответствий (первый Foreach-Jbject).


$PathDir = "C:\temp\test2\"
$SourceDir = "C:\temp\test1\"
Copy-Item $($SourceDir+"*.RUX") $($PathDir+"Files\")

$DictFile = Get-Content $($PathDir+"Script\DimDict.txt")
ForEach ($Data in $DictFile)
{
$A,$B = $Data -split ';'
write-host "Первое: "$A
#write-host " Второе: "$B
$ListRuxFiles=get-childitem $($PathDir+"Files\*.RUX")
foreach ($RuxFile in $ListRuxFiles)
{
(Get-Content $RuxFile )|
Foreach-Object { IF ( $_ -match "$A[^',)A-z]"){Write-host $RuxFile,$_} } |
Foreach-Object { $_ -replace "\'$A\'", "'$B'" } |
Foreach-Object { $_ -replace "\!$A\,", "!$B," } |
Foreach-Object { $_ -replace "\!$A\)", "!$B)" } |
Set-Content $RuxFile
}
}

Отчего-то не работает всё после первого Foreach-Object, а если закомментировать его, то все остальные друг другу не мешают. Почему так может быть?
...
Рейтинг: 0 / 0
05.02.2014, 15:05
    #38550394
F#
F#
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скрипт Powershell
ioscat,

Код: powershell
1.
2.
3.
4.
5.
6.
7.
8.
foreach ($RuxFile in $ListRuxFiles)
 {
   GC $RuxFile | %{
       select-string ($A+ '[^]')  $_ | Write-Host
       (($_ -replace "\'$A\'", "'$B'" ) -replace "\!$A\,", "!$B,")  -replace "\!$A\)", "!$B)"
   }
 Set-Content $RuxFile
 }



первый обработчик у вас делает Write-Host и не выдает ничего в пайплайн - надо либо после write-host еще раз написать $_ (через ; ) либо как я написал
...
Рейтинг: 0 / 0
05.02.2014, 15:13
    #38550418
ioscat
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скрипт Powershell
Спасибо, второй вариант сработал, я, правда, не очень понимаю, почему.
...
Рейтинг: 0 / 0
05.02.2014, 15:53
    #38550525
F#
F#
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скрипт Powershell
ioscat,


Вот этот кусок берет объект и не возвращает ничего:
Код: powershell
1.
Foreach-Object { IF ( $_ -match "$A[^',)A-z]"){Write-host $RuxFile,$_} }  



Так как у Write-Host нет возвращаемого значения. Надо
Код: powershell
1.
Foreach-Object { IF ( $_ -match "$A[^',)A-z]"){Write-host $RuxFile,$_}; $_ }  



Еще for-each тут точно бессмыслено так как на вход поступает единичная строка.
...
Рейтинг: 0 / 0
06.02.2014, 21:15
    #38552522
ioscat
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скрипт Powershell
Снова я
А почему такое:

"DAAAB" -match "D+B"
False
...
Рейтинг: 0 / 0
06.02.2014, 21:58
    #38552556
f#
f#
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скрипт Powershell
ioscat,

потому, что нет фрагмента в котором после одного или нескольких повторений d следует сразу b
...
Рейтинг: 0 / 0
06.02.2014, 22:06
    #38552566
f#
f#
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скрипт Powershell
ioscat,

потому, что нет фрагмента в котором после одного или нескольких повторений d следует сразу b
...
Рейтинг: 0 / 0
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Скрипт Powershell / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]