0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【PS1】パターン全網羅作成

Last updated at Posted at 2022-07-19

参考(引用)

https://www.shegolab.jp/entry/windows-cross-join#shegolab-crossjoin-02
https://qiita.com/ponsuke0531/items/4629626a3e84bcd9398f

入力ファイルと出力ファイルのエンコーディングは BOM なしの UTF-8 です。
入力ファイルの1行目はヘッダー行とみなし読み飛ばされますので、出力には含まれません。
出力ファイル名はとりあえず [スクリプト名].out.txt の固定で、都度上書きされます。

エクスプローラのファイルパスにpowershellと入力して実行

【使い方】

フォルダを一つ新規作成して開きます
上記バッチスクリプトを BAT ファイル(.bat)としてそのフォルダに保存します
ファイル名は任意ですが、拡張子(ファイル名の最後)を 「.bat」としてください
組み合わせたいリストをそれぞれテキストファイル(.txt)として同フォルダに保存します
先頭行から1行1項目とします(見出し行なし)
フォルダでコマンドプロンプトを開きます
フォルダウィンドウの上部にあるアドレスバーに cmd と入力してEnterを押すと、フォルダのパスでコマンドプロンプト(文字だけの黒いウィンドウ)を開けます
コマンドプロンプトでバッチファイルを実行します
各ファイルの項目の組み合わせデータがカンマ区切りで出力されます
以下のような使い方を想定しています。

$scriptName = $MyInvocation.MyCommand.Name
if ($args.Count -eq 0) {
    echo "Usage: ${scriptName} FILE1 FILE2 ..."
    exit
}

$gInputLists = @()   #ファイルから読み込まれた複数リストの配列
$gOutputLines = @()  # 出力行の配列

function crossjoin {
    param($line, $listIdx, $lineNum)
    if ($listIdx -gt 0) {
        foreach($item in $gInputLists[$listIdx]) {
            $lineNum = crossjoin ([string]::concat($line,",",$item)) ($listIdx-1) $lineNum
        }
    } else {
        foreach($item in $gInputLists[$listIdx]) {
            $gOutputLines[$lineNum] = [string]::concat($line.substring(1),",",$item)
            $lineNum += 1
        }            
    }
    $lineNum
}

$gInputLists = foreach($file in $args) {
    ,(cat $file -Encoding UTF8 | select -Skip 1 )
}

$totalLineCount = $gInputlists|%{$a=1}{$a*=$_.Count}{$a}
$gOutputLines = @("") * $totalLineCount

crossjoin "" ($gInputlists.Count-1) 0 | Out-Null

$result = $gOutputLines -join "`r`n"
[System.IO.File]::WriteAllText(".\${scriptName}.out.txt", $result) # BOMなしUTF-8出力
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?