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

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

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

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

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

配列

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

Q&A

解決済

1回答

1296閲覧

【PowerShell】配列と固定値の文字の連結について

chiks0723

総合スコア12

PowerShell

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

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

配列

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

0グッド

0クリップ

投稿2020/02/16 09:50

引数として渡された値を\でつなぎ、
パスとして返すコードを作成しています。
下記でパスを1つ返すコードは実現しました。

function path{ foreach( $i in $args){ $a = $args -Join "\" } return $a } $dir = path "C:" "User" "Users" $dir C:\User\Users

上記の関数を、引数の中に配列が入っていた時等でも\で繋げれるようにしたく
どのように改善すれば繋げれるようになるかご教授いただけると助かります、

想定としては、
$filelist = (Get-ChildItem $dir).Name 
で取得したファイル名(test.csvとsample.csvが格納されている想定)を使用して
同一の共通処理でファイルのフルパス全ても取得したいと考えております。

↓理想

path $dir $filelist C:\User\Users\test.csv C:\User\Users\sample.csv

要素数が違うものなのでどのような処理をすればいいか詰まってしまい
大変申し訳ございませんがよろしくお願いいたします。

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

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

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

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

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

dodox86

2020/02/16 10:34

path $dir $dirlist $filelist のように、途中のパラメータも配列だった場合はどうなってしまう(=どう動くのを期待する)のでしょうか。
chiks0723

2020/02/16 10:56 編集

質問ありがとうございます。 記載が漏れてしまい申し訳ございません。 今回の実現したいプログラムでは$dir内には、テキストファイルのみが格納され、 途中のパラメータに$dirlistのような配列という想定はなしでお願いします。 機能要件としては ①渡された任意の配列ではない引数の数分”/”で連結 ②①で作成したディレクトリパスを第一引数 $filelist(配列)を第二引数として設定すると  第二引数の配列内の要素数分 第一引数と繋げたフルパスが返ってくる 上記を実現したいです。 わかりにくく大変申し訳ございませんがよろしくお願いいたします。
guest

回答1

0

ベストアンサー

そのような場合に使うコマンドレットとしてJoin-Pathがあります。

PowerShell

1Get-ChildItem "C:\foo" -Name | Join-Path "C:\bar" -ChildPath { $_ }

だだし、ご質問の意図が単純に指定ディレクトリに存在しているファイルのフルパスを取得したいということであれば、次のようにFileInfoオブジェクトのまま取得しておいて

PowerShell

1$fileList = Get-ChildItem $dir -File

必要に応じて次のようにプロパティの値を引き出した方がよいかと思います。

PowerShell

1$fileNames = $fileList.Name 2$fullPaths = $fileList.FullName

PowerShellはオブジェクトを扱うことを得意としており、文字列の情報よりもオブジェクトの情報の方が質も量も優れています。文字列に展開するのはなるべく最後にするのがスクリプトをうまく書くポイントです。

投稿2020/02/16 11:08

mitarai

総合スコア223

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

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

chiks0723

2020/02/16 13:32

無事実現できました オブジェクト情報の扱いを慣れるように精進していきます。 この度は本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問