我想将所有内容压缩到一个文件夹中,所有内容,但要压缩到单独命名的文件中。出于某种原因,互联网上的每个解决方案都只能压缩文件夹,或者根本无法工作。
目前,我有
for /d %%X in (*) do "c:\Program Files\7-Zip\7z.exe" a -mx "%%X.zip" "%%X\"
我的意思是
for
= 启动一个循环/d
= 我不知道这是什么意思%%X
= 我不知道这是什么意思in
= 不确定,我认为是当前目录(*)
= 我不知道这是什么意思do
= 执行中的下一件事“
...”
"C:\Program Files\7-Zip\7z.exe"
= 我想完成的事情。a
= 添加到存档-m9
= 最大压缩"%%X.zip"
= 将其压缩为 zip 文件,但我仍然不知道%%X
是什么。"%%X\"
= 即使我知道“%%X\”是什么意思我也不知道它为什么会出现在这里。
我发现替换 %%X
会给存档一个名称,所以它似乎复制了目标对象的名称。
所以如果我猜的话,我认为 /d
是“目标文件夹”,%%X
是名称。
所以
for /d %%X in (*) do "c:\Program Files\7-Zip\7z.exe" a -mx "%%X.zip" "%%X\"
按我的理解用英语说:对于当前目录中的每个文件夹名称,使用 7z 最大压缩成同名的 zip...除了我不知道要替换什么 /d
使它的目标文件而不是文件夹。定位特定的扩展会更好。
我尝试用谷歌搜索“cmd 中的/d
是什么意思”、“%%X
是什么意思”等。我似乎没有弄对搜索结果,我想我对谷歌来说太模糊了。
更新:
for %%i in (*) do "c:\Program Files\7-Zip\7z.exe" a -mx "%%i.zip" "%%i\*.*"
似乎为文件夹中的每个项目制作了一个名为 NAMED 的 zip 文件,但实际上并没有向它们添加任何文件。我尝试添加 /f
,但是当我这样做时它根本不起作用。
此外,我第一次发布它时,它作为Batch script loop 的副本被关闭了。这几乎与我的问题无关。是的,我有一个循环,是的,它解决了批处理循环,但不,它并没有解决我的问题,因为我的问题不在于循环本身。或者,如果有,我完全不知道为什么或如何解决。所以,请向我解释一下。我确实看到了它说 %%X
是变量的部分,但这只是意味着我想 X 可以是我想要的任何东西,因为在我的更新中我指出了一个次要问题,我认为我遇到的问题是 7z 而不是 bat 文件。
最佳答案
for
命令一开始可能会让人很困惑,但是有许多视频和网站展示了如何使用它的示例。
首先尝试 for/?
查看内置帮助信息。
如果我正确理解您的要求,下面的代码应该是您所追求的。如果没有,那么这应该可以帮助您理解原则并根据您的需要进行调整。
for /F "tokens=*" %%a in ('DIR /A-D /B /ON "C:\Test Folder\"') do (
echo Processing File: C:\Test Folder\%%a
"C:\Program Files\7-Zip\7z.exe" a -mx1 -tzip "C:\Test Folder\%%a.zip" "C:\Test Folder\%%a"
echo.
)
pause
现在让我们逐行分析...
for /F "tokens=*" %%a in ('DIR /A-D /B /ON "C:\Test Folder\"') do (
/F
告诉它使用文件
而不是目录
(/D
)
in (' ')
包含查找文件名的命令。请注意命令两端的 '
标记……它们很重要。
%%a
表示 in()
命令传递给它的文件名的每个值。
do ( )
它应该如何处理它收到的每个 %%a
值。
现在我们得到查找文件名并作为 %%a
do ()
部分的命令
('DIR /A-D /B /ON "C:\Test Folder\"')
您可以通过运行 dir/?
/A-D
告诉它忽略目录...只列出文件。
/B
只输出文件名,不输出任何其他内容,如大小,否则会混淆 for
命令。
/ON
按字母顺序将文件名提供给 do()
命令
"C:\Test Folder\"
包含我们要列出/执行操作的所有文件的文件夹。确保包括尾部斜杠。还要使用 ""
标记,否则如果文件夹名称中有空格,它将无法工作。
向屏幕写入(回显)一条消息,显示它将要执行的文件。
echo Processing File: C:\Test Folder\%%a
您可以在 https://sevenzip.osdn.jp/chm/cmdline/syntax.htm 找到更多关于如何使用 7zip 命令行功能的信息。
"C:\Program Files\7-Zip\7z.exe" a -mx1 -tzip "C:\Test Folder\%%a.zip" "C:\Test Folder\%%a"
"C:\Program Files\7-Zip\7z.exe"
运行此程序....并向其传递以下信息(参数/开关)
a
添加文件而不是提取等
-mx1
使用最快的压缩方法...但空间效率较低。
-tzip
使用ZIP
压缩格式
"C:\Test Folder\%%a.zip"
将新的“zip”文件另存为。 (%%a
将替换为当前文件的名称...又名 ChuckNorris.mpg,最终将成为 ChuckNorris.mpg.zip)
"C:\Test Folder\%%a"
这是您要压缩的实际文件。
关于batch-file - 7zip 使用批处理文件创建空文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60634995/