コマンドラインを介して複数のZIPファイルからテキストファイルを抽出して結合するには、何が必要ですか?


1

私は目の前で興味深いスクリプト作成の課題を抱えています。私はそれを行う方法があると確信していますが、おそらく特定のツールや機能的な知識が不足しているように感じます。

互いにマージする必要のあるテキストファイルなどをそれぞれ含む50以上のZIPファイルがあります。構造は次のようなものです。

C:\Reports\FirstJob-1.zip  
|-MyName  
  |-FirstJob
    |-1
      |-[Some other folders]
      |-TXTReports
        |-English
          |-[Some other files]
          |-Report.txt  

C:\Reports\FirstJob-2.zip  
|-MyName  
  |-FirstJob
    |-1
      |-[Some other folders]
      |-TXTReports
        |-English
          |-[Some other files]
          |-Report.txt 

C:\Reports\SecondJob-1.zip  
|-MyName  
  |-SecondJob
    |-1
      |-[Some other folders]
      |-TXTReports
        |-English
          |-[Some other files]
          |-Report.txt

Report.txt1つの通常のフォルダーにすべてのファイルがあり、一意の名前が付けられている場合、おそらくそれぞれの*.txtようなものを対象にして実行するFORステートメントを書くことができtype filename.txt >> Consolidated.txtます。ただし、これらはすべて同じファイル名を持ち、個別のZIPファイル内に深く埋め込まれています。

現在使用している潜在的に有用なツールは、Windows XP Professional SP3、PowerShell、およびWinZipです。私は他のものをダウンロードしたりインストールしたりしませんが、サードパーティのツール(またはMicrosoftやWinZipの追加ツール)が必要な場合があることを理解しています。どのツールを使用しても、Windowsでネイティブに実行する必要があります。このシステム上のCygwinや他のエミュレータをいじる必要は本当にありません。

少なくとも、コマンドラインからZIPファイルを分析および操作できるツールが必要です。また、私がまだ考えていない他の特定の合併症はありますか?

回答:


1

Info-ZIPのUnZipここでは Windowsバイナリ)を使用すると、コマンドラインからzipファイルを抽出できますunzip -x。残りは、ファイルを見つけて連結する問題です。例えば:

find . -name Report.txt -print0 | xargs -0 cat > Consolidated.txt

上記は、CygwinまたはGnuWin32のいずれかにあるUnixコマンドです。

潜在的な影響として、xargsコマンドが多くのファイルを使用している場合は時間がかかりすぎ、ファイルが非常に大きい場合はディスク領域が不足する可能性があります(ファイルを1つずつ解凍して連結し、解凍したアーカイブを削除することで回避できます)各ファイルの後のフォルダー)。


提案をありがとう。おそらく、Cygwinや他のUnixエミュレーターを台無しにしたくないと言うべきでしょう。私はそれをすべてWindowsでネイティブにやりたいです。
イスジ

1

別のオプションを提案できますか?Windows XPを使用している場合は、VBScriptも自由に使用できます。数年前、WSHのVBScriptを活用して、Windows XPの圧縮フォルダーの組み込みサポートを使用してzipファイルを作成および操作する方法を示す一連の記事を執筆しました。あなたはそれをやってみるべきです。スクリプトにはサードパーティの依存関係はなく、ファイルシステムロジックのスクリプト作成は非常に簡単です。

WSHの圧縮フォルダー

CompressedFolderクラスについて

CompressedFolderクラスの実装

これの長所と短所は、ShellオブジェクトのNamespaceメソッドを使用して、zipファイルを圧縮フォルダーとして開くことができることです。これは、Windows Explorerでディレクトリのようにそれらを探索することと本質的に同じです。


提案をありがとう。私はVBScriptにあまり詳しくないので、必要なすべてのコマンドをバッチファイルに入れることができるコマンドラインユーティリティがあることを望んでいました。それでも、これを試してみるかもしれません。
イッツィ

バッチファイルは、ロジックを実装する能力が非常に制限されています。これは本当にあなたの最良のルートです。ぜひ見てみることをお勧めします。
ニルポ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.