2017-11-19 31 views
1

私はPowerShellの初心者です(英語もあまりよくありません)。フォーラムで質問するのに十分な大きさの私の最初の問題に直面しました。しかし、それを短くすることができます。テキストのみの書式設定でテキストファイルを作成するにはどうすればよいですか?

私は、リストの魔法使いが数字の後ろにスペースで区切られた名前が続くスクリプトを持っています。この構造を保つためには必要ですが、スクリプトで作成されたファイルを読み込ませると、ソフトウェアがクラッシュします。

私はいくつかのテストをしてきましたが、私が助けてくれたことがありました。ソフトウェアによって作成されたファイルを取り、PowerShellで作成したファイルのテキストを手作業で貼り付けることでした。私は、ファイルを保存しようとしていた場合は、ワードパッドは私にプロンプ​​トそのサイスを示した:

「あなたは、テキストのみの形式で文書を保存しようとしているが、これはつもりすべての整形を消去された」

I okをクリックし、後でソフトウェアで、すべて正常に動作しました。

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で、ファイルはデッキです)

+0

は 'アウトFile'に' -Encoding Ascii'を追加使用するデフォルトのエンコーディングでファイルの書き込み

変更。デフォルトのエンコーディングはUnicodeです。おそらく、ForgeはUnicodeを処理できません。 –

+0

mmm - 多分それを傷つける。 [ForgeにUTF-8エンコーディングが必要](https://www.slightlymagic.net/wiki/DotP_2014:_Frequent_Modding_Mistakes) 'Ascii'が動作しない場合は' -Encoding UTF8'を試してください。 –

+1

@LievenKeersmaekersあなたはあなたに起こるすべての良いことに値するでしょう、問題は解決されます。ありがとうございました。 –

答えて

0

Out-Fileのデフォルトのエンコーディングは、ユニコードですが、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 
関連する問題