将文件夹中所有文件的格式从Unicode更改为ANSI的Powershell脚本

4
有没有人能给我提供一个PowerShell脚本,将文件夹中所有文件的格式从Unicode改为ANSI?这是一个样例文件夹结构:
c:\DBObjects
  +StoredProcs
      - sp1.sql
      - sp2.sql
      - sp3.sql
  +Views
     - v1.sql
     - v2.sql
  .Functions
     - fn1.sql
     - fn2.sql

我尝试了以下脚本来处理一个文件,它能够正常工作。然而,它会创建另一个文件:

Get-Content sp1.sql -encoding Unicode | Set-Content sp1_Ansi.sql -encoding ASCII

感谢您!
1个回答

10

请尝试

Set-Content sp1.sql -Encoding ASCII -Value (Get-Content sp1.sql)

注意,整个文件将被临时读入内存。如果这不可接受,您需要使用管道方法将内容写入新文件,然后删除旧文件,并将新文件重命名为旧文件的名称。


1
成功了!以下脚本适用于一个文件夹中的所有文件。 ls *.sql | forearch {sc $_ -encoding asciii -value(gc $_)}。你能告诉我如何循环遍历子目录中的所有文件吗?谢谢! - rk1962
1
我搞定了。ls -re -include *.sql | forearch {sc $_ -encoding ascii -value(gc $_)}。如果有更好的方法,请告诉我。谢谢! - rk1962
1
@rk1962,以下是我如何使用文件通配符(在此情况下为*.sql)进行操作的方法:Get-ChildItem *.sql | % { Get-Content $_ | Set-Content "$($_.basename)-ascii.sql" -encoding ASCII } - Al Dass

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接