0

私はアプリケーションに取り組んでおり、フォルダー内の gz ファイルを抽出する必要があります。

必要なのは、特定のフォルダー内のすべての gz ファイルをループして同じフォルダーに抽出できる ac# スクリプトです。

これにはいくつかのライブラリがあることは知っていますが、gz で動作させることはできませんでしたが、zip で動作させることができました。

または、同じことに対する他の解決策がある場合、つまり、WinRarコマンドラインユーティリティを使用して同じことを達成できるバッチスクリプトを作成できる場合。可能であれば、アイデアだけではわかりません。

注: 2 番目のオプションを削除する必要があると思います。WinRar コマンドは RAR ファイルしか処理できません。

ありがとう

4

4 に答える 4

2

winrar の「unrar」コマンドライン フリーウェアを使用して、バッチ ファイルとしてこれを試してください。

@REM ------- BEGIN demo.cmd ----------------
@setlocal
@echo off
set path="C:\Program Files\WinRAR\";%path%
for /F %%i in ('dir /s/b *.gz') do call :do_extract "%%i"
goto :eof

:do_extract
echo %1
mkdir %~1.extracted
pushd %~1.extracted
unrar e %1
popd

REM ------- END demo.cmd ------------------

提供: http://www.respower.com/page_tutorial_unrar

于 2012-05-22T07:47:10.773 に答える
1

解決しました。道を示してくれた MichelZ に感謝します。私は 7-zip コマンド ライン バージョンを入手して、このトリックを実行しました。

@REM ------- BEGIN demo.cmd ----------------
@setlocal
@echo off
set path="C:\Program Files\7-Zip\";%path%
for /F %%i in ('dir /s/b *.gz') do call :do_extract "%%i"
for /F %%i in ('dir /s/b *.zip') do call :do_extract "%%i"
goto :eof

:do_extract
pushd %~dp1
7z e %1 -y
popd
REM ------- END demo.cmd ------------------
于 2012-05-24T07:34:08.007 に答える
1

以下のようなものを提案できます。

using System;
using System.IO;
using System.Linq;

class Program
{
    static void Main(string[] args)
    {

        try
        {
            var files = from file in Directory.EnumerateFiles(@"c:\something",
                            "*.gz", SearchOption.AllDirectories)
                        select new
                        {
                            File = file,
                        };

            foreach (var f in files)
            {
                Process.Start("c:\winrar.exe", f.File);
            }
            Console.WriteLine("{0} files found and extracted!", 
                files.Count().ToString());
        }
        catch (UnauthorizedAccessException UAEx)
        {
            Console.WriteLine(UAEx.Message);
        }
        catch (PathTooLongException PathEx)
        {
            Console.WriteLine(PathEx.Message);
        }
    }
}

注: パスと winrar.exe パラメーターを自分で正しいものに置き換えてください。

于 2012-05-22T07:50:52.460 に答える
-1
@setlocal
@echo off
set path="C:\Program Files\WinRAR\";%path%
for /F %%i in ('dir /s/b *.gz') do call :do_extract "%%i"
goto :eof

:do_extract
echo %1
mkdir %~1.extracted
pushd %~1.extracted
Winrar e %1
popd
于 2016-09-28T11:40:01.447 に答える