• ベストアンサー

PowerShellの繰り返し処理の最後だけを

PowerShell 3.0を使用しています。 for文における、前処理と後処理は可能なものでしょうか? for文で、「末尾にカンマ(,)のついた文字列」を繰り返し連結して行き、最後だけは「末尾にカンマを除外した文字列」を連結して変数に入れたいのですが、そもそも可能でしょうか? 現状、for文から抜けた後にその変数の「行末のカンマを削る」というやり方でなんとかなっているのですが、 美しくないので解決方法があればご教示下さい。 ENDとBEGINは関数内では使用することができるのですが、forではそれに相当するものが見当たりません。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

$array = @(0..9) $joined = $array -join "," Write-Host $joined とか出来る気がします。

kenokabe2
質問者

お礼

解決しました!ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • powershellでの改行方法について

    テキストファイルの特定の文字列の後の改行コードをカンマに変換するbatファイルを作成しようと思っているのですがうまくいきません。 DOSで用意されているコマンドだけでは実現は難しいと思って、powershellコマンドを使っています。 実現は一つのbatファイルで行いたいのですが、どなたか実現方法を知っていましたら教えていただけませんでしょうか。 [JIKKO.bat] powershell.exe "$(Get-Content TEST.txt) -replace '★`n',','" >TEST_RESULT.txt [TEST.txt] あああ,いいい,ううう★ えええ かかか,ききき,くくく★ けけけ [TEST_RESULT.txtの理想] あああ,いいい,ううう,えええ かかか,ききき,くくく,けけけ

  • powershellで引数受け取り時にエラーになる

    powershellで下の様に引数を取得し変数に格納したいのですが、 $test = "$args" ファイル名に「&」などの文字があると読み込めないとエラーがでます。 そこで、どんな文字があっても単純な文字列として 読み込むにはどうしたら良いのでしょうか。 但し、ファイル名を手動で変更してから取り込む事はできません。 よろしくお願いいたします。

  • PowerShellの暗号化&複合化

    お世話になります。 タイトルにありますように、PowerShellでパスワード文字列の暗号化と、 暗号化された文字列を元の文字列に戻し、変数に持つ、という事をしたいのです。 此方のサイトを見つけまして、 http://technet.microsoft.com/ja-jp/windows/ps_tips13.aspx 真似る事で、テキストファイル内に暗号化されたパスワードを作成することが出来ました。 しかし、テキスト内に記録された文字列を、どうやって元に戻し、使うのでしょうか。 この方法は証明書を使うものでも、公開鍵を使うものでもない、 実に単純なものに思えるのですが元に戻す方法が判りません。 どうかご教授頂けますでしょうか。よろしくおねがいします。

  • CString型の文字列連結について

    質問させて頂きます。 開発環境はVC++.netです。 CString型の文字列連結について教えて頂きたく。 CString Test[_MAX_FNAME+1]; という変数にがあるとします。 Test変数のデータは Test[0]には"2" Test[1]には"1" が格納されてるとします。 Test変数のデータをCString Text1という変数に 以下のようなソースで文字列連結処理を行ったのですが、だめでした。 何がいけないのでしょうか? for(int i = 0; i <= 2; i++) { Text1 += Test[i]; } 実行結果は Text1には"2"が格納されたままでした。 実際はText1には、"2""1"となってほしい。 分かりにくい説明とは思いますが、 回答、ヒントなどを頂けますでしょうか 宜しくお願い致します。 それと、もしよかったら、Text1の格納データは "2","1"としたいので、カンマ区切りのやりかたなども ヒントを頂けたら幸いです。 以上です。 宜しくお願い致します。

  • C言語の連結について

    C言語で文字列を文字列の後ろに連結させるのはstrcat()関数で出来ますが,int型で宣言した変数はどのようにして連結させればよいでしょうか?? 1回文字列に変換してから連結させる方法しかないのでしょうか??

  • PowershellでCSVをexcelに書き込む

    Powershellを使いCSVファイルをexcelの任意のセル位置から書き込むためにQueryTablesを使わない方法として下記コードをとあるサイトを見て継ぎ接ぎで作りましたがデータ量が多くなると処理時間を要します。 「QueryTablesよりStreamReaderのほうが 大容量(100MB以上)のテキストファイルを処理する場合、Get-ContentやImport-Csvなどのコマンドレットではなく、StreamReaderを使用することが推奨されています。なぜなら、PowerShellのパイプ処理は遅く、大量のメモリを消費するため、効率的な処理ができないからです。 StreamReaderは.NET Frameworkのオブジェクトを生成して使用するため、コードの記述量が増えるかもしれませんが、大容量ファイルの読み込みには最適な手法です。」 とありより良い方法と思いましたが私のコードのの書き方かどうか分かりませんが期待外れでした。因みに2列、1,000,001行でもQueryTablesなら15秒ぐらいですがこれだと10,001行で50秒位掛かりる状況でした。 # 通常のCSVファイルをExcelにインポートするスクリプト $excel = New-Object -ComObject Excel.Application $excel.Visible = $true $book = $excel.Workbooks.Add() $sheet = $excel.Worksheets.Item(1) $csvPath = "D:\test\pp004.csv" # CSV ファイルのエンコーディングを指定する $enc = [System.Text.Encoding]::UTF8 # CSV ファイルをオープンする $streamReader = New-Object -TypeName System.IO.StreamReader $csvPath, $enc # 変数を初期化する・・書き出し位置の指定 $i = 2 $j = 3 # 1行ずつ最終レコードまで読み込む While (($line = $streamReader.ReadLine()) -ne $null) { # カンマで文字列を分割し配列に格納する $fields = $line.Split(",") # 配列を順番に処理する foreach ($field in $fields) { # セルの書式を「文字列」にする #$sheet.Cells.Item($i, $j).NumberFormat = "@" # セルに値を設定する $sheet.Cells.Item($i, $j).Value = $field # 列を1つ進める $j++ } # 行を1つ進める $i++ # 変数初期化 $j = 3 } # CSV ファイルを閉じる $streamReader.Close() # COM 参照を解放する [void][System.Runtime.InteropServices.Marshal]::ReleaseComObject($sheet) [void][System.Runtime.InteropServices.Marshal]::ReleaseComObject($book) [void][System.Runtime.InteropServices.Marshal]::ReleaseComObject($excel) [GC]::Collect() もしこのコードに問題があればお教えください。 よろしくお願いします。

  • Stringの連結

    VB.netでのWindowsアプリケーション開発をしています。 String文字列の連結においてOutofMemory.Exceptionのエラーがスローされます。 手法としてはSingleの数値をカンマで区切り、1000個のカンマ区切り文字列を作成します。 その文字列は「temp_Str as String」の変数に格納していくのですが、 大型のループ処理で10万件以上作成されたところで上記のエラーが発生します。 (時間にして2~3時間程度経過した時点) 少なくとも数100万件の処理を行いたいのですが、 うまくメモリー管理をする方法はないでしょうか? 今現在GC.CollectやRemove等の処理は入れているのですが、あまり効果がありません。 よろしくお願いいたします。

  • テキスト内容をバッチ処理で変換する方法をおしえてください 。

    csvの内容変換をしたいのですが、データの量が大変多いためどのような方法で変換すればよいか悩んでおります。 csvのまま開くと桁数の多い数字や、アルファベットの「E」を含んだ数字の列2.36E+256のようになってしまったり、不具合が起こります。文字列にしてみても解決されずでした。 そのため、その部分を「="」「"」で囲みたいと思ってます。 csvをtxt保存し、バッチで変換することはできますか? たとえば、~番目のカンマの後に「="」をいれ、~番目の前に「”」を入れ、末尾に「"」を入れた後次の行も同じくの処理をするというコマンドは可能なのでしょうか? いろいろ調べてみましたが、答えを見つけ出せません。よい方法があれば教えてください。

  • 変数に指定文字列が含まれるときの処理

    ある変数$Exampleに"AABBCC"の文字列が含まれているとします。 if文で$ExampleにAAかCCが含まれるときの処理をひっかけたいのですが、 可能な関数はありますでしょうか。 ご存知の方、宜しくお願いします。

    • ベストアンサー
    • PHP
  • xxxxxxx = "aaa bbb ccc"という文字列の""で囲まれた部分を処理したい

    最終的にリストにしたいので、正規表現で""内を取り出した後に split /( | )/のような処理をすればいいのだと思うのですが、まず第一に""内の文字列を取り出せません。 はじめのxxxxxxxは決まった文字列ですので、これを変数にできれば早いんですがそういう処理はできないですよね? フォーマットは決まっているのですが、どうやって""内の文字列を取り出せばいいのでしょうか? @ARGV =~ s/\".*\"$/$1/; こういう処理ではうまくいきませんでした。 Perlを触るのが初めてなので、ネットで調べていますがさっぱりわからなくて途方に暮れています。 よろしくお願いします。

    • ベストアンサー
    • Perl