【问题标题】:Unzip a file using batch scripting使用批处理脚本解压缩文件
【发布时间】:2014-11-20 10:47:21
【问题描述】:

我在 E 盘中有一个 Nirmal.zip 文件 假设我单独提取文件的基本名称“Nirmal”并从中创建一个文件夹。 现在存在一个名为 Nirmal 的文件夹和名为 Nirmal.zip 的 zip 文件 我需要提取 Nirmal.zip 的内容并将其放入新创建的 Nirmal 文件夹中。

如何使用批处理脚本完成上述操作

【问题讨论】:

  • 你试过7z.exe,免费的7-Zip的命令行版本吗?
  • @NirmalAnand 如果我的回答有帮助,请将其标记为已接受。 See this page 解释为什么这很重要。

标签: batch-file


【解决方案1】:

Windows 不包含unzip.exe 或任何其他类似的用于解压缩文件的控制台可执行文件。您可以使用Shell.ApplicationJScriptVBscript 编写脚本,如果您愿意,甚至可以使用PowerShell

本着彻底的精神,这里有一个 Windows 批处理/JScript 混合脚本,可以满足您的要求:

@if (@a==@b) @end /*

:: unzip.bat
:: usage: unzip.bat zipfile.zip
:: extracts zipfile.zip to .\zipfile\

:: begin batch portion

@echo off
setlocal

if "%~1"=="" (
    echo Usage: %~nx0 filename.zip
    goto :EOF
)

cscript /nologo /e:jscript "%~f0" "%~f1"

echo(
echo Unzipping complete.

goto :EOF

:: end batch portion
:: begin JScript portion */

// https://gist.github.com/889769
// slightly modified by rojo for http://stackoverflow.com/a/27049936/1683264
function unzip(zipfile, unzipdir) {
    var fso = new ActiveXObject('Scripting.FileSystemObject'),
        shell = new ActiveXObject('Shell.Application'),
        dst, zip;

    if (!unzipdir) unzipdir = '.';

    if (!fso.FolderExists(unzipdir)) fso.CreateFolder(unzipdir);

    dst = shell.NameSpace(fso.getFolder(unzipdir).Path);
    zip = shell.NameSpace(fso.getFile(zipfile).Path);

    for (var i=0; i<zip.Items().Count; i++) {
        try {
            if (fso.FileExists(zipfile)) {
                WSH.Stdout.Write('Unzipping ' + zip.Items().Item(i) + '... ');
                dst.CopyHere(zip.Items().Item(i), 4 + 16);
                WSH.Echo('Done.');
            }
        }
        catch(e) {
            WSH.Echo('Failed: ' + e);
        }
    }
}

var zipfile = WSH.Arguments(0),
dest = zipfile.replace(/\.\w+$/, '\\');

unzip(zipfile, dest);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-27
    • 2022-06-15
    • 1970-01-01
    • 2019-04-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多