2013-11-13 4 views
0

Я пытаюсь запустить поиск и заменить на все файлы в каталоге. Я запускаю Windows 7 Enterprise, а обычная папка находится на локальной машине. Всякий раз, когда я запускаю инструкцию только из 5 .SQL-файлов в папке, сценарий работает нормально. Когда я добавляю еще одну папку внутри первой (так что теперь есть еще 5 .sql и одна папка, в которой ничего нет) и попытайтесь запустить тот же оператор, я получаю сообщение об ошибке, которое запрещает доступ к новой папке. Я пробовал все с установкой разрешений на папку, файлы и все остальное, о чем я мог подумать, что может препятствовать доступу к этой дочерней папке. Любые рекомендации будут очень признательны. Я даже пытался убедиться, что атрибуты были правильно установлены в папке в окнах.Получение ошибки доступа в powershell найти и заменить

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

(get-Content D:\project\*) | Foreach-Object {$_ -replace ";", ""} | Set-Content D:\project\* 

ответ

0

Удалось добиться того, что я пытался сделать с помощью этого кода. Спасибо за ваш вклад. Это дает мне возможность изменить все файлы с расширением SQL.

Get-ChildItem D:\Projects *.SQL -recurse | 
Foreach-Object { 
    $c = ($_ | Get-Content) 
    $c = $c -replace ";", "" 
    [IO.File]::WriteAllText($_.FullName, ($c -join "`r`n")) 
} 
0

Скорее сделать что-то вроде этого:

$folder = 'D:\project' 
foreach ($f in (Get-ChildItem $folder -Recurse | ? {-not $_.PSIsContainer})) { 
    (Get-Content $f.FullName) -replace ';' | Set-Content $f.FullName 
} 

Я бы не чувствовать себя комфортно с звездочку в обоих начале и конце трубопровода, даже если она будет работать (что он не делает) ,

+0

Это ничего не делало. Он не выдавал никаких ошибок, но не менял ни одного из файлов в каталоге –

+0

@CM_Heroman. Он работал, когда я тестировал его. Пожалуйста, покажите фактический код, который вы использовали. –

Смежные вопросы