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

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

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

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

Q&A

解決済

2回答

1841閲覧

Powershell Read-Hostで取得した文字列から、ファイル名を取出したい。

saito5

総合スコア14

PowerShell

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

0グッド

0クリップ

投稿2018/10/23 08:37

編集2019/08/30 05:24

前提・実現したいこと

●実現したいこと
Powershell Read-Hostで取得した文字列から、ファイル名を複数取出したい。
●前提
ファイル名は、「"」や半角スペースで囲まれていることがある。

発生している問題・エラーメッセージ

結果  ---------- Windows PowerShell Copyright (C) 2015 Microsoft Corporation. All rights reserved.  ◆複数ファイル指定時は、   Enterを押下してから次のファイルをDrag&Dropしてください。 Drag&drop qrb_data_file(s): C:\Users\saito5\Desktop\ARSC_List_20181023_134906.t xt Drag&drop qrb_data_file(s): C:\Users\saito5\Desktop\Output_20181023_134906.csv Drag&drop qrb_data_file(s): PS E:\WorkFolder>

該当のソースコード

Powershell

1 Write-Host " ◆複数ファイル指定時は、`n  Enterを押下してから次のファイルをDrag&Dropしてください。" 2 $temparray = @() 3 do { 4 $input = (Read-Host "Drag&drop qrb_data_file(s)") 5 if ($input -ne '') { $tmparray += $input } 6 } 7 until ($input -eq '') 8 9 $x = @() 10 foreach ( $f in $tmparray ) { 11 $x += (where-Object{ $f.Trim()} | where-Object{ $f.Trim('"') }) 12 } 13 Write-Host $x

試したこと

function FilNamInput($temp){
Write-Host $temp
$filearray = New-Object System.Collections.Generic.List[System.Object]
do {
$input = (Read-Host "drag&drop csv file(s)")
# inputから、空白と "を取り除いて、配列 $tmparrayに追加する
if ($input -ne '') {
$s = ($input.Trim()) | foreach-object{ $_ -replace '"', '' }
$filearray.Add($s)
}
}
until ($input -eq '')
# 同じファイルの指定は排除
$filearray = $filearray | select -uniq
Write-Output $filearray
}

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

ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答2

0

where-objectではなくforeach-objectが必要だった。

投稿2018/10/25 01:43

saito5

総合スコア14

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

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

0

自己解決

◆2つ目以降のファイル指定時は、`n  Enterを押下して次のファイルをDrag&Dropしてください。" $tmparray = @() do { $input = (Read-Host "Drag&drop qrb_data_file(s)") if ($input -ne '') { $tmparray += ($input.Trim()) | foreach-object{ $_ -replace '"', '' } } } until ($input -eq '')

投稿2018/10/24 04:01

編集2018/10/25 00:46
saito5

総合スコア14

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問