####やりたいこと
現在Powershellでパスワードの一覧表のテキストを読み込み指定された部分(使用する箇所)をクリップボードにコピーするというスクリプトを作成中です。
####問題点
今のところ現在の日付からファイル名を特定し読み込むというところまでできたのですが読み込んだテキストの指定した部分のみを抜き出すという部分がうまく実現できず詰まっています。
スクリプトに合わせてすべて1行になっているので場所の指定は簡単にできるのですが、その方法が調べてみてもよくわかりませんでした。
####パスワード一覧の形式
【ファイル名の形式】
パスワード表は1年に2回、4月と10月に更新されます(上期と下期の最初に更新)
上期のパスワードファイル名にはその年の先頭に0を、下期の場合は1をつける形式にしています。
【パスワードの形式】
テキストファイルの中身は縦8行、横20列の2次元の表となっていたものを
今回のスクリプトで扱いやすいようすべてを改行などを含まない1行で記載されています。
【パスワードの指定方法】
パスワードの指定は、カンマ区切りで
「ローマ字,数字,数字」
の形式で入力させ、ローマ字で行を指定(8行なのでA~Hまで)、1つ目の数字でその行の何文字目からスタートするか、2つ目の数字でスタートから何文字コピーするか。の範囲を指定します。
####現在のコード
#コピーするパスワードの場所を入力 $input = Read-Host "コピーするパスワードをカンマ区切りで入力してください 例:A,1,8" $input2 = $input.split(",") #passwordfileのあるフォルダへ移動 $path = "C:\..\..\Password表" Write-Host $path Set-Location $path #上半期、下半期の判定(0=上半期,1=下半期) $month = Get-Date -F "MM" Write-Host $month if(([int]$month -ge 4) -and ([int]$month -le 9)){ $period = 0 }else{ $period = 1 } #$period+西暦下二桁でファイル名を決定 $year = Get-Date -F "yyyy" #1~3月は西暦を-1 if([int]$month -le 3){ $year -= 1 } $filename = [string]$period + [string]$year $filename += ".txt" Write-Host $filename $pass = Get-Content $filename Write-Host $pass
####追記
パスワード表のサンプルを記載します。
元々は、
1 2 3 4 5 6 7 8 9 0 A xxxxxxxxxxxxxxxxxxxx B xxxxxxxxxxxxxxxxxxxx C xxxxxxxxxxxxxxxxxxxx D xxxxxxxxxxxxxxxxxxxx E xxxxxxxxxxxxxxxxxxxx F xxxxxxxxxxxxxxxxxxxx G xxxxxxxxxxxxxxxxxxxx H xxxxxxxxxxxxxxxxxxxx
これをそのままテキストファイルに記載されており使用するたびにファイルを開いて指定箇所をコピーしていました。
それを今回のスクリプトに合わせて縦のアルファベットと横の1~0の数字を消しすべて1行でテキストに記載されています。
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...
このファイルを読み込み、例えばスクリプトの最初で「B,1,8」が指定されると
B列の1文字目から8文字を使用する。ということです。
また記載を忘れていましたが行は2文字で1セットなので指定できるのは1~0のみです。
回答2件
あなたの回答
tips
プレビュー