使用' cat'并避免编码变化

时间:2014-04-03 14:08:54

标签: encoding concatenation

要温柔;这是我第一次来这里,在过去的9个月里我只是在工作中学习PS,所以我的知识有限。 你可能不得不慢慢地大声说话,好像你是一名每日邮报的读者试图在没有得到布里的情况下在法国的吐司上点奶酪。

所以,我使用cat命令连接几个文件,一切都运行得很好,除了我生成的文件,正如你所期望的那样,UCS2 Little Endian编码。

我需要UTF8,但我使用cat代替Get-Content的事实似乎会导致问题。 如果我使用Get-Content和Set-Content或Get-Content和Out-File我的脚本不喜欢我的预期输出文件尚不存在的事实。 因此,请记住我需要将原始文件保存到存档位置,我需要连接现有文件,然后我需要删除原始文件(不在存档中),然后将生成的文件移动到另一个位置,这可行,但我的输出是在UCS2 Little Endian:

$RenFld = $env:homedir + "\export\renewal\e-renewals"
$RenArchive = $env:homedir + "\export\renewal\e-renewals\Archive"
$RenDone = $env:homedir + "\export\renewal\e-renewals\Done"

Copy-item -path $RenFld\ren_*.dat -destination $RenArchive -force

cat -path $RenFld\ren_*pak_emlcon1.dat > $RenFld\pak_emlcon1.dat

Remove-item -path $RenFld\ren_*.dat -force

get-childItem -path $RenFld\*.dat | where {$_.length -eq 0} | remove-Item

Copy-item -path $RenFld\*.dat -destination $RenDone -force

Remove-item -path $RenFld\*.dat -force

此:

$RenFld = $env:homedir + "\export\renewal\e-renewals"
$RenArchive = $env:homedir + "\export\renewal\e-renewals\Archive"
$RenDone = $env:homedir + "\export\renewal\e-renewals\Done"

Copy-item -path $RenFld\ren_*.dat -destination $RenArchive -force

Get-Content -path $RenFld\ren_*pak_emlcon1.dat -Encoding UTF8 > Set-Content $RenFld\pak_emlcon1.dat

Remove-item -path $RenFld\ren_*.dat -force

get-childItem -path $RenFld\*.dat | where {$_.length -eq 0} | remove-Item

Copy-item -path $RenFld\*.dat -destination $RenDone -force

Remove-item -path $RenFld\*.dat -force

和此:

$RenFld = $env:homedir + "\export\renewal\e-renewals"
$RenArchive = $env:homedir + "\export\renewal\e-renewals\Archive"
$RenDone = $env:homedir + "\export\renewal\e-renewals\Done"

Copy-item -path $RenFld\ren_*.dat -destination $RenArchive -force

Get-Content -path $RenFld\ren_*pak_emlcon1.dat -Encoding UTF8 > Out-File $RenFld\pak_emlcon1.dat

Remove-item -path $RenFld\ren_*.dat -force

get-childItem -path $RenFld\*.dat | where {$_.length -eq 0} | remove-Item

Copy-item -path $RenFld\*.dat -destination $RenDone -force

Remove-item -path $RenFld\*.dat -force

......不行。 运行使用此PS的可执行文件时出现以下错误:

-------- Error Details
Get-Content : A positional parameter cannot be found that accepts argument '$homedirexport\renewal\e-renewals\pak_emlcon1.dat'.
At $cliutl\eren_conc.ps1:13 char:12
+ Get-Content <<<<  -path $RenFld\ren_*pak_emlcon1.dat -Encoding UTF8 > Out-Fil
e $RenFld\pak_emlcon1.dat
    + CategoryInfo          : InvalidArgument: (:) [Get-Content], ParameterBin 
   dingException
    + FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell 
   .Commands.GetContentCommand

我离开了我的深度,并希望得到一些帮助。

我保证我已经在论坛上搜索了类似的主题和问题,但我的知识有限意味着我并不确切知道我的搜索参数应该是什么,所以如果答案已经在那里,请在你的呼吸下发誓你自己,并指出我正确的方向。

为任何人提供的任何帮助干杯。

罗斯。

0 个答案:

没有答案