powershell

パスの途中に空白が入ったファイルを実行する

ダブルクォートで囲んだファイルを実行するには&をつける必要あります
& "C:\Program Files\7-Zip\7z.exe" x amazonlinux2023.tar.xz
なぜ頭に &(呼び出し演算子)が必要なのか

パスの途中に Program Files という「半角スペース」 が入っていますよね。PowerShellはスペースがあると「ここでコマンドが区切られた」と判断するため、パス全体を " " で囲む必要があります。しかし、" " で囲むと今度は「ただの文字列」になってしまう……。このジレンマを解決するのが頭につけた &(呼び出し演算子 / Call Operator) となります。

# 私の7zipは"Program Files"配下に入っているので、ダブルクォーテーションで
# 囲む必要あります。
#
tmp $ "C:\Program Files\7-Zip\7z.exe" x amazonlinux2023.tar.xz
ParserError:
Line |
   1 |  "C:\Program Files\7-Zip\7z.exe" x amazonlinux2023.tar.xz
     |                                  ~
     | Unexpected token 'x' in expression or statement.

# しかしこの通り正常に動作しません
# そこで活躍するのが頭に & を付けます。bashのバックグランド実行と
# 同じで覚えやすいですよね
#
tmp $ & "C:\Program Files\7-Zip\7z.exe" x amazonlinux2023.tar.xz

7-Zip 26.02 (x64) : Copyright (c) 1999-2026 Igor Pavlov : 2026-06-25

Scanning the drive for archives:
1 file, 35901276 bytes (35 MiB)

Extracting archive: amazonlinux2023.tar.xz
--
Path = amazonlinux2023.tar.xz
Type = xz
Physical Size = 35901276
Method = LZMA2:23 CRC64
Streams = 1
Blocks = 1

Everything is Ok

Size:       155627520
Compressed: 35901276
tmp $
スポンサーリンク
タイトルとURLをコピーしました