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

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

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

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

PowerShell

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

Q&A

2回答

2247閲覧

PowerShell core

退会済みユーザー

退会済みユーザー

総合スコア0

Windows

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

PowerShell

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

0グッド

0クリップ

投稿2018/12/29 14:21

PowerShellで10個のファイルを生成するコードを試してみましたが、
ファイル名の先頭に番号を付加しようとするとエラーとなってしまいます。

1_item.txt、2_item.txtと10_item.txtと作成されると思ったが、エラーとなってしまう。

Poweshell

11..10 | ForEach-Object {New-Item -Path $_item.txt}

エラー内容

PowerShell

1New-Item : Cannot bind argument to parameter 'Path' because it is null. 2At line:1 char:40 3+ 1..10 | ForEach-Object {New-Item -Path $_item.txt} 4+ ~~~~~~~~~~ 5+ CategoryInfo : InvalidData: (:) [New-Item], ParameterBindingValidationException 6+ FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.NewItemCommand 7

一方、ファイル名の後ろにはエラーとならずに番号が付加されたファイルが生成できています。
item1_.txt、item2_.txtとitem10.txtまで作成される。

PowerShell

11..10 | ForEach-Object {New-Item -Path item$_.txt}

いったい何が悪いのでしょうか?

以下、インストールしたPwerShellのバージョンです。

PowerShell

1PS C:\work\Powershelldir> $PSVersionTable 2 3Name Value 4---- ----- 5PSVersion 6.2.0-preview.3 6PSEdition Core 7GitCommitId 6.2.0-preview.3 8OS Microsoft Windows 10.0.17134 9Platform Win32NT 10PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...} 11PSRemotingProtocolVersion 2.3 12SerializationVersion 1.1.0.1 13WSManStackVersion 3.0

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

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

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

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

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

guest

回答2

0

つ$item.txt → ${}item.txt

投稿2018/12/29 14:52

編集2018/12/29 14:56
hichon

総合スコア5737

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

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

0

PowerShell

1-Path $_temp.txt

では _temp という名前の変数の値を探しに行ってしまいます。
PowerShellでは空白文字や.,などの英単語の区切文字までは同一単語と見做すからです。
回避方法はhichonさんの回答のように変数名を{}で囲み

PowerShell

1-Path ${_}_temp.txt

とするか、横着せずに、型変換し文字列結合演算子を用い

PowerShell

1-Path ([string]$_ + '_item.txt')}

と書くかです。
なお変数名の{}囲みは本来は記号やスペースを含むような特殊な変数名を定義するための機能です

投稿2018/12/30 06:32

編集2018/12/30 10:51
Turkis_Mond

総合スコア94

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問