在PowerShell中获取访问错误查找和替换

时间:2013-11-13 20:45:53

标签: powershell

我正在尝试运行查找并替换目录中的所有文件。我正在运行Windows 7 Enterprise,正在搜索的文件夹位于本地计算机上。每当我只对文件夹中的5个.SQL文件运行语句时,脚本运行正常。当我在第一个文件夹中添加另一个文件夹时(所以现在有5个.sql和一个文件夹中没有任何内容)并尝试运行相同的语句,我收到一个错误,拒绝访问新文件夹。我已经尝试了所有设置权限的文件夹,文件和我能想到的其他一切可能使它无法访问该子文件夹。任何建议将不胜感激。我甚至尝试确保在Windows中的文件夹上正确设置了属性。

这是我正在使用的脚本,当所有文件都在文件夹的根目录中时,它会起作用,但子文件夹中的任何内容都会引发错误。

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

2 个答案:

答案 0 :(得分:0)

而是做这样的事情:

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

我觉得在管道的开头和结尾都有一个通配符,即使它可以工作(但它没有)。

答案 1 :(得分:0)

能够实现我尝试使用此代码执行的操作。感谢您的所有输入。这使我可以选择使用SQL扩展名更改所有文件。

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