2016-10-08 20 views
-1

実行中のインシデントを使用して、本番環境で現在4000台のcsvファイルをスタンバイするフォルダがあります。指定された位置の文字列をPowerShellに置き換えます。

のPowerShellで、私は交換したいと思います:

In all files => OK 
In all lines => OK 

位置からすべての文字列は、現在の文字列の内容について考慮することなく位置端18に9を起動します。私は使用する正しい正規表現の質問を推測することができますができません。

-replace 'WhatToUse','MyNewString' 

例:(すべてのファイルを別の文字列が含まれている、2016年8月10日には固定文字列ではありません)

3162498;08.10.2016;30.10.2016;CHN; 

3162498;MyNewString;30.10.2016;CHN; 
+1

^(\ d +?);(、。$?); '、' $ 1; newstring; ' – wOxxOm

答えて

0

(そのOKかどうかを確認)、これを試してくださいになるだろう
$pathwithfiles= "C:\temp" 
    $stringtosearh="toto" 
    $stringtoreplace="titi" 
    $delimitercsv=";" 


    $listfil=gci -Path $pathwithfiles -Recurse -File -Filter "*.csv" 


    foreach ($currentfile in $listfil) 
    { 
     $contentfile=get-content $currentfile.FullName 
     [string[]][email protected]() 
     $numline=0 

     foreach ($row in $contentfile) 
     { 

     $numline++ 

      if ($numline -eq 1) 
      { 
       $contentfileres+=$row 
       continue 
      } 
      else 
      { 
      [string[]] $linearray=$row -split $delimitercsv 
      [string[]] [email protected]() 


       for ($i = 0; $i -lt $linearray.Count; $i++) 
       { 

         if ($i -ge 9 -and $i -le 18) 
         { 
         $linearrayres+=$linearray[$i].Replace($stringtosearh, $stringtoreplace) 
         } 
         else 
         { 
         $linearrayres+=$linearray[$i] 
         } 
       } 

       $contentfileres+=($linearrayres -join $delimitercsv) 

      } 

     } 

     $contentfileres | out-file ($currentfile.FullName) 

     Write-Host "File $currentfile.FullName replaced" 
    } 
+0

コードのこの巨大なコメントは、質問と何が関係していますか? –

+0

この「巨大なコードの巨大な塊」は、givingされたディレクトリ内のすべてのcsvで9〜18の位置にstrinsを置き換えています。批判を提案するのに何か良いことはありますか? – Esperento57

1

あなたはこれのようにすることができます:

$old = "3162498;08.10.2016;30.10.2016;CHN;" 
$new = $old.remove(8,10).insert(8,"MyNewString") 

この結果は次のようになります:3162498; MyNewString; 30.10.2016; CHN;

関連する問題