如何使用纯文本格式创建文本文件?

时间:2017-11-19 09:03:21

标签: powershell text format

我是PowerShell的新手(并且对英语也不是很好),我刚刚面对我的第一个问题,这个问题足以在论坛上提问。但是让它缩短。

我有一个脚本,它带有一个列表,其中包含一个数字,后跟一个由空格分隔的名称。我需要它来保存这个结构,但是当我让它读取脚本创建的文件时,软件会崩溃。

我一直在做一些测试,有些东西对我很有帮助,它是采用软件创建的文件并手动粘贴PowerShell创建的文件的文本。当我要保存文件时,wordpad向我显示了一个sais的提示:

“您将以纯文本格式保存文档,这将删除所有格式化”

我点击确定,稍后在软件中,一切正常。 这是我用来创建文本文件的脚本:

cls
$formats = "legacy", "standard"
$prefixname = "GF META"
$sideboard = "Sideboard"

$i=0
do{
    $url = "https://www.mtggoldfish.com/metagame/$($formats[$i])/full#paper"
    echo $url
    $html = Invoke-WebRequest $url
    $mainDeck = $html.parsedhtml.getElementsByClassName("archetype-tile")
    echo $mainDeck.length
    $e=0
    do{
        $sUrl = "https://www.mtggoldfish.com/archetype/$($mainDeck[$e].id)"
        echo $sUrl
        $shtml = Invoke-WebRequest $sUrl
        $smainDeck = $shtml.parsedhtml.getElementsByTagName("input") | Where{ $_.name -eq "deck_input[deck]" }
        $deck = $smainDeck.value
        $deck = $deck -split '\n'
        $nmainDeck = $shtml.parsedhtml.getElementsByClassName("deck-view-title")
        $nname = $nmainDeck[0].innerText
        $fullname = $nname.Substring(0,$nname.Length-23)
        $tfullname = "$prefixname $($formats[$i]) $fullname"
        $deckFile = "[metadata]`nName=$tfullname`n[Main]"
            $n =0
            do{
            $compare = $deck[$n][0]
            echo $compare
            if ($deck[$n][0] -eq 's'){
                $deckFile = "$deckFile`n[Sideboard]"
            }else{
                $deckFile = "$deckFile`n$($deck[$n])"
            }
            $n +=1
        }while($n -le $deck.Length)
        $deckFile = $deckFile.ToString()
        echo $deckFile
        $deckFile | Out-File "C:\Users\aleja\Desktop\Mazos\$tfullname.dck"
        $e += 1
    }while ($e -le $mainDeck.length)
    $i += 1
}while ($i -le $formats.Length)

非常感谢你的关注。 (顺便说一下软件是mtg Forge,文件是甲板)

1 个答案:

答案 0 :(得分:0)

Out-File的默认编码是Unicode,但是Forge expects UTF-8 encoding

更改使用默认编码编写文件

$deckFile | Out-File "C:\Users\aleja\Desktop\Mazos\$tfullname.dck"

明确使用UTF-8编码

$deckFile | Out-File "C:\Users\aleja\Desktop\Mazos\$tfullname.dck" -Encoding UTF8