我有五个.sql文件,知道每个文件的名称。对于此示例,将它们称为one.sql,two.sql,three.sql,four.sql和five.sql。我想附加所有文件的文本并创建一个名为master.sql的文件。我如何在PowerShell中执行此操作?随意发布此问题的多个答案,因为我确信有几种方法可以做到这一点。
我的尝试不起作用,并创建了一个包含数十万行的文件。
PS C:\sql> get-content '.\one.sql' | get-content '.\two.sql' | get-content '.\three.sql' | get-content '.\four.sql' | get-content '.\five.sql' | out-file -encoding UNICODE master.sql
答案 0 :(得分:9)
Get-Content one.sql,two.sql,three.sql,four.sql,five.sql > master.sql
请注意,>
相当于Out-File -Encoding Unicode
。当我需要指定不同的编码时,我只倾向于使用Out-File。
答案 1 :(得分:4)
这里有一些很好的答案,但如果你有很多文件,也许你不知道所有的名字,这就是我想出的:
$vara = get-childitem -name "path"
$varb = foreach ($a in $vara) {gc "path\$a"}
例如
$vara = get-childitem -name "c:\users\test"
$varb = foreach ($a in $vara) {gc "c:\users\test\$a"}
你可以直接将它直接传递到| add-content
或其他什么,但我喜欢在变量中捕获,以便稍后我可以操作。
答案 2 :(得分:1)
看看这是否效果更好
get-childitem“one.sql”,“two.sql”,“three.sql”,“four.sql”,“five.sql”|获取内容| out-file -encoding UNICODE master.sql
答案 3 :(得分:0)
我认为解决这个问题的合理方法是使用Add-Content
$files = Get-ChildItem '.\one.sql', '.\two.sql', '.\three.sql', '.\four.sql', '.\five.sql'
$files | foreach { Get-Content $_ | Add-Content '.\master.sql' -encoding UNICODE }
hovewer Get-Content在读取多个非常大的文件时通常非常慢。如果是您的情况,本文可以提供帮助:http://keithhill.spaces.live.com/blog/cns!5A8D2641E0963A97!756.entry
答案 4 :(得分:0)
怎么样:
Get-Content .\one.sql,.\two.sql,.\three.sql,.\four.sql,.\five.sql | Set-Content .\master.sql
答案 5 :(得分:0)
我需要类似的东西,Chris Berry的帖子有帮助,但我认为这更有效:
gci -name "*PathToFiles*" | gc > master.sql
第一部分gci -name "*PathToFiles*"
为您提供文件列表。这可以使用通配符来获取.sql文件,即gci -name "\\share\folder\*.sql"
然后管道到Get-Content并将输出重定向到master.sql文件。如Kieth Hill所述,您可以使用Out-File代替>如果需要,可以更好地控制输出。
答案 6 :(得分:0)
这是我如何连接Sql文件夹中的sql文件:
for k,v in my_dict.items():
my_dict[k] = tuple([0.3*x for x in v])
return my_dict