
私、とある理由によりC#にて作成したものをPowerShellにて作り直しを試みております。会社での利用が目的であり、PowerShellのVer2という制限がある為、ZipFileクラスを使って何とかしようとしています。
実現したいことを大まかには下記の流れです。(2,3は質問とは直接関係ありません)
1.Zip書庫内のファイルを一つずつチェック
2.ある条件にて必要なものだけを解凍対象とする
3.解凍対象ファイルをファイル名を変更するのでその準備
4.指定フォルダに変更後名称にて解凍する
以下,PowerShellにて作成してみたものの抜粋ですが、
Add-Type -AssemblyName "System.IO.Compression.FileSystem"
Add-Type -AssemblyName "System.IO.Compression"
[System.IO.Compression.Zipfile]::OpenRead("対象.zipパス").Entries | %($_){}
にて【ZipArchiveEntry】を一つづ取得し,ForEach内にて、
$_.[System.IO.Compression.ZipFileExtensions]::ExtractToFile("解凍先ファイルパス",1)
を実行するところでエラーとなります。
どなたかご教授ください!もしくは他の方法もあるでしょうか?
(今,次案としているのは,C#ソースをそのまま書き込むという方法です)
<元としているC#ソース>
using (ZipArchive ZA = ZipFile.OpenRead("対象.zipパス"))
{//書庫内のファイルとディレクトリを列挙する
foreach (ZipArchiveEntry ZAE in ZA.Entries)
{ ~この間でファイルチェックおよび変更後ファイル名構築~
ZAE.ExtractToFile("解凍先ファイルパス", true);
}
}
No.1ベストアンサー
- 回答日時:
確認したわけじゃないですが
> $_.[System.IO.Compression.ZipFileExtensions]::ExtractToFile("解凍先ファイルパス",1)
$_はZipArchiveEntryクラスのインスタンスなので、書くとすれば以下の様になりませんか
[System.IO.Compression.ZipFileExtensions]::ExtractToFile($_, "解凍先ファイルパス",1)
ZipFileExtensions クラス
https://msdn.microsoft.com/ja-jp/library/system. …
おーーー!出来たーーー!
ありがとうございます、出来ました。
さらにはとても早い回答で、大変助かりました!
何とか自力で解決したいと思い、これだけで3日間は悩んでました。
頂いた参照リンクも見てはいたのですが・・・siffon9さまの例文を見て、やっと点と点が繋がった感じで3ございます。
siffon9さま、もしお時間があればさらにご教授願いたいのですが・・・
私は今回、元となるC#ソースとして書いた
> ZAE.ExtractToFile("解凍先ファイルパス", true);
の書き方だけに囚われておりました。
C#では、ZAE(ZipArchiveEntry)を頭に持ってきても動作するのは何故なのでしょうか?参照リンクでのメソッド記述方法とは異なると思うのですが。
No.2
- 回答日時:
> C#では、ZAE(ZipArchiveEntry)を頭に持ってきても動作するのは何故なのでしょうか?
これらのクラスを使用したことが無いので推測になりますが
ZipArchiveEntry クラス
https://msdn.microsoft.com/ja-jp/library/system. …
の「備考」の表の下の記述によるものではないでしょうか
(機械翻訳で何を言っているのかよくわかりませんが)
推測どおりであるならば、PowerShellにおいても
Add-Type -AssemblyName "System.IO.Compression.FileSystem"の記述があるので
当該行は
$_.ExtractToFile("解凍先ファイルパス", true)
と書いても動作しそうですね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
classファイルについて
-
JSP・JAVAクラスのソースコード...
-
jdbcドライバのjarファイルにク...
-
JADで*.jarごとデコンパイルす...
-
Javaアプリケーションのアイコ...
-
<Tomcat>存在しないJSPをイン...
-
SVFの設定について:クラスパス...
-
javaでuseBeanエラーの解決方法
-
jspで関数部分だけ分離すること...
-
Javascriptの値をJava(JSP)へ渡...
-
同一パッケージ内の継承について
-
html上で、バッチやexeファイル...
-
Javaのエラーについてです
-
NetBeans IDE 3.6で
-
vs codeはオフラインでも使用で...
-
メインクラス○○.classが見つか...
-
「ワークスペースをビルド中」...
-
マイクラjavaでForgeを入れたい...
-
この <windows.h> はどこに在る...
-
.jarファイルの中身って書き換...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Eclipse・プロジェクトで、フォ...
-
classファイルについて
-
SVFの設定について:クラスパス...
-
javaクラスファイルをEclipseで...
-
eclipse でclassesフォルダーが...
-
earファイルを展開する方法
-
Eclipse「リフレッシュ」と「ク...
-
jdbcドライバのjarファイルにク...
-
EclipseでHTTP404エラーが出る。
-
『ClassNotFoundException: org...
-
javax.mailがimportできない
-
【Eclipse】パッケージ・エクス...
-
VisualStudioでC++クラスを追加...
-
「main メソッドを持つクラスが...
-
java クラスファイルとソースコ...
-
結局 deleteしないとダメ? フ...
-
FileWriterで8kb以上書き込むに...
-
「削除するか、クラスパスの正...
-
【Eclipse】逆コンパイルでエラ...
-
Eclipseで、クラスを新規作成す...
おすすめ情報