1

ファイルからプルしているテキストのいくつかの行を出力しており、$ strAcctの後にこのセクションを出力すると、キャリッジリターンが追加されます。

Add-Content "C:\TestFile-Output.txt" ($strAcct+$strPart2)

したがって、基本的にファイルに出力されるのは$strAcctキャリッジリターン/改行$strPart2です。

これが私のすべてのコードです:

#Setting Variables
$data = get-content "C:\TestFile.txt"
$strAcct= @()
$strPart1= @()
$strPart2= @()
$strLength= @()


#For each line of text in variable $data, do the following
foreach($line in $data)
{
  #reseting variables for each time the FOR loop repeats
  $strAcct= @()
  $strPart1= @()
  $strPart2= @()
  $strLength= @()


   #We're saying that if the line of text is over 180 characters, were going to split it up into two different lines so MEDITECH can accept this note files
   if ( $line.length -gt 180)
   { $strLength = $line.length
     $strAcct += $line.substring(0,22) 
     $strPart1 += $line.substring(0,180)
     $strPart2 += $line.substring(181)

     #Create first and second line in text file for the string of text that was over 180 characters
     Add-Content "C:\TestFile-Output.txt" $strPart1
     Add-Content "C:\TestFile-Output.txt" ($strAcct+$strPart2)



   } 
   #If our line of text wasn't over 180 characters, just print it as is
   Else {
   Add-Content "C:\TestFile-Output.txt" $line

   }

}
4

1 に答える 1

3

$strAcct $strPart1 $strPart2コード内のすべての配列です。これはあなたの意図ではないと思います。文字列の配列をファイルに送信すると、デフォルトで各項目が新しい行に配置されます (つまり、CR-NL で区切られます)。

コードのヒューリスティックに基づいて、長い行を 2 行に分割しようとしている場合は、以下が機能するはずです。

$data = get-content "C:\TestFile.txt"    

#For each line of text in variable $data, do the following
foreach($line in $data)
{   
   $newContent = 
     if ($line.length -gt 180)
     {
       $part1 = $line.substring(0,180)         
       $part2 = $line.substring(181)
       $acct = $line.substring(0,22)

       $part1
       $acct + $part2
     } 
     else
     {
       $line
     }

   Add-Content "C:\TestFile-Output.txt" $newContent
}
于 2012-09-21T19:22:34.707 に答える