我想创建一个.7z的批处理文件,如下所示。所以batch.bat将在它将被执行的根文件夹中,并且将.7z文件夹在folder1,folder2,folder3等文件中,但.7z不会创建一个它只需要.7z文件的文件夹。文件夹并使用该文件夹的标题创建一个单独的.7z文件,但不创建带有文件夹的.7z文件。
root (batch.bat)
folder1
- file1.ext
folder2
- file1.ext
- file2.ext
folder3
- file1.ext
- file2.ext
- file3.ext
这是我用来创建.7z单个文件的代码。
PATH %%PATH%%;"C:\Program Files\7-Zip";
FOR %%I IN (*.*) DO 7z.exe a -t7z -m0=LZMA2 -mx=5 -mmt=ON "%%~nI.7z" "%%I"
答案 0 :(得分:0)
使用此:
for /d %%I in ("*") do 7z.exe a -t7z -m0=LZMA2 -mx=5 -mmt=ON "%%I.7z" ".\%%I\*"
答案 1 :(得分:0)
你需要一个for /D
循环遍历\root
中的目录,这些目录包含在7z.exe
工具中,如下所示:
for /D %%I in ("\root\*") do (
pushd "%%~fI"
"%ProgramFiles%\7-Zip\7z.exe" a -t7z -m0=LZMA2 -mx=5 -mmt=ON "%%~dpnxI.7z" ".\*"
popd
)
由于7z.exe
似乎存储了相对于当前工作目录的路径,因此我暂时使用pushd
和popd
切换到每个迭代路径。
我建议以绝对方式指定\root
路径(例如,D:\Data
),因此批处理程序可以在任何地方使用。但是,如果您不想这样做,请将\root\*
部分替换为*
。
顺便说一句,在实际使用path
时直接指定路径时不需要7z.exe
命令,就像我上面所做的那样(使用系统变量%ProgramFiles%
而不是专用无论如何它指向的目录)。但是,您的语法无论如何都是错误的:您实际上是将PATH
变量设置为%PATH%;"C:\Program Files\7-Zip";
字面上,但我想您只是想将"C:\Program Files\7-Zip"
附加到它,因为您需要写{ {1}}。