質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

バッチファイル

バッチファイル(Batch File)は、Windowsのコマンドラインインタープリターによって複数のコマンドを実行させる事が出来るスクリプトファイルです。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

1回答

4209閲覧

PowerShellで2つの配列を簡単に並列に加工して出力したい

tetora347

総合スコア7

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

バッチファイル

バッチファイル(Batch File)は、Windowsのコマンドラインインタープリターによって複数のコマンドを実行させる事が出来るスクリプトファイルです。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2020/07/25 03:10

実現したいこと

以下のようなbatの出力結果をPowershellだけで得たい

bat

1rem "動画タイトルリスト.txt" "動画IDリスト.txt" は同じ行数ある要素 2rem PowerShellではどちらも変数として扱う 3rem 例えば動画タイトルと動画IDを横に並べて一つのファイルにしたい 4rem 以下はCSV形式にする例 5 6echo off 7chcp 65001 8setlocal enabledelayedexpansion 9 10set n=0 11set m=0 12for /f "delims=" %%A in (動画タイトルリスト.txt) do ( 13 for /f "delims=" %%a in (動画IDリスト.txt) do ( 14 if !n! equ !m! ( 15 echo "%%A","%%a">>動画タイトルと動画IDリスト.csv 16 ) 17 set /a m+=1 18 ) 19 set /a n+=1 20 set m=0 21) 22 23endlocal 24exit /b

質問した理由

バッチでは上のようにして2つの配列(一次元のリスト2つ)を一つのファイル(二次元のリスト)にまとめられるのだが、
PowerShellでテキストファイルを作らずに2つの変数を簡単に並列に加工する方法はないか?

foreachやforで同等の仕組みは作れるがオブジェクトを扱うPowerShellの利点を活かせていない
検索した中では PowerShellの多次元配列テーブル ビューを作成する などは敷居が高い

補足情報(ツールのバージョンなど)

cmd (Microsoft Windows [Version 10.0.18363.900])
powershell (7.0.2)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2020/07/25 04:46 編集

簡単に加工する方法はありますが、それらのハードルが高いのであれば簡単ではないかもしれません。 汎用的に使える Zip を作っている人がいるので、それをそのまま使わせてもらい、Export-Csv で出力したらどうでしょうか。 https://tech.guitarrapc.com/entry/2014/08/20/054159
tetora347

2021/03/28 15:33 編集

返信ありがとうございます リンク先も参考になりました
guest

回答1

0

ベストアンサー

PowerShellでテキストファイルを作らずに2つの変数を簡単に並列に加工する方法はないか?

以下のような方法ではどうでしょうか?

powershell

1$list1 = @("a", "b", "c") 2$list2 = @("1", "2", "3") 3 40..($list1.count-1) | 5%{ [PSCustomObject]@{ list1_item=$list1[$_]; list2_item=$list2[$_] } }

必要であれば、最後の結果をさらにパイプラインで Export-Csv に渡してCSVとして出力することも可能です。

投稿2020/07/31 02:11

ku__ra__ge

総合スコア4524

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tetora347

2020/08/01 00:39

PSCustomObjectというツールがあるのですね! 試しに$list1にナンバリングを、$list2にgcした要素を与えたところ理想の結果を得ることができました。 2つの変数の要素数が違ってもエラーにならない点、変数の数だけ列を拡張できる点など、 とても使いやすいと思いました。ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問