7-zip - 如何使用命令行包含/排除大量文件

7-zip - 如何使用命令行包含/排除大量文件

我正在(尝试)开发一个程序,通过 ShellExecute() 来操作 7-zip 控制台程序(7z.exe)并向其传递计算机生成的文件列表。

现在我想做的是:

我想传递一个命令行告诉它包含和排除文件:即

include these :
c:\path\path2\path
c:\path\path2\path__\
.... more files

exclude these :
c:\path\path2\path\data\files\foo\bar\fish.dat
c:\path\path2\path__\data\slug.mp3
.... more files

所以我创建了如下命令行:

7z a -t7z -i!"...file to include" -x!"file to exclude" ... etc etc

我只是凭记忆重复,所以我知道命令行可能不准确

但我输入的内容不起作用。我只是得到了 path 和 path__ 中的所有内容。我想要的是一个内部如下所示的档案:

.\
path\
     data\
          files\
                foo\
                    bar\
                        <everything in path\data\files\foo\bar except for foo.dat>
path__\
       data\
            <everything in path__\data\ except for slug.mp3>

我能得到一些帮助来获得这个结果吗?谢谢

答案1

如果不知道您的确切7z命令,那只是猜测,但情况如下:

7z a -t7z -ir@"files_to_include.txt" -xr@"files_to_exclude.txt" ....

注意r后面的-i-x表示递归。您可能还会@在文件名前使用 而不是!。(或者至少您应该这样做。!用于在命令行中指定通配符:)

然后针对您的files_to_exclude.txt内容。我相信您应该使用相对的路径。因此,不要c:\....在路径前指定。如果包含中的常用路径是,c:\path\path2则需要删除这来自排除。原因是在7z压缩文件时它已经消除了 -part c:\path\path2(因为没有存储整个路径,只存储了相对部分)。所以你的排除不再匹配。你可以看到这一点,因为打开 .zip 时c:\path\path2不在 .zip 中。(所以匹配它不起作用)

所以你files_to_exclude.txt看起来应该是这样的:

path\data\files\foo\bar\fish.dat
path__\data\slug.mp3
.... more files

因此,如果在添加和更改新的之后r-i仍然-x遇到files_to_exclude.txt问题,我们需要查看您的实际命令。

相关内容