5

7za Powershell のコマンドライン ユーティリティを使用してファイルを解凍しようとすると、小さな問題が発生します。

$zip_source変数を zip ファイルのパス に設定$unzip_destinationし、目的の出力フォルダーに設定します。

ただし、コマンドラインでの使用には、次の7zaように指定された引数が必要です。

7za x -y <zip_file> -o<output_directory>

したがって、私の現在の呼び出しは次のようになります。

& '7za' x -y "$zip_source" -o$unzip_destination

と宛先の間にスペースを入れることができ-oないため、PowerShell は$unzip_destination変数を展開しないように見えますが、$zip_source展開されます。

現在、プログラムはすべてのファイルを のルートにC:\ある という名前のフォルダに抽出するだけ$unzip_destinationです。変数の周りにさまざまな種類の引用符を設定しても機能しません。

-o"$unzip_destination" : still extracts to C:\$unzip_destination
-o'$unzip_destination' : still extracts to C:\$unzip_destination
-o $unzip_destination  : Error: Incorrect command line

コマンドを実行する前に強制的に展開する方法はありますか?

4

3 に答える 3

6

これを試して:

& '7za' x -y "$zip_source" "-o$unzip_destination" 
于 2012-05-07T14:49:27.117 に答える
3

このようにしてみてください:

-o $($unzip_destination)

編集者注:このソリューションは、後のスペースでのみ機能-oます(この場合-o $unzip_destinationは機能します)。これを削除すると、コマンドは意図したとおりに機能しません。
したがって、このアプローチは、OPで要求されているように、オプション名に変数値を直接追加するのには適していません。

于 2012-05-07T14:45:08.173 に答える
0

これはうまくいくはずです:

& '7za' x -y $zip_source -o${unzip_destination} 
于 2012-07-30T14:20:49.490 に答える