Windows 批量递归压缩所有嵌套子目录
我有一个具有以下结构的文件夹:Windows 批量递归压缩所有嵌套子目录,windows,batch-file,cmd,Windows,Batch File,Cmd,我有一个具有以下结构的文件夹: Year Month Day file file file Day file file Year Month Day file file file Day file
Year
Month
Day
file
file
file
Day
file
file
Year
Month
Day
file
file
file
Day
file
file
我想压缩所有的“日”文件夹,以便以后移动它们
到目前为止,我已经尝试了一些我在这里找到的选择,但我似乎无法得到我需要的结果,我甚至无法通过我自己的尝试语法错误。这就是我到目前为止所做的:
for /d %%A in (C:\test) do
for /d %%B in (C:\test\*) do
for /d %%C in (C:\test\*\*) do
"C:\Program Files\WinRAR\rar.exe" a -r -u -rr
只允许在路径的最后一个元素中使用,因此类似于C:\test\*\*
的操作将不起作用
无论如何,您非常接近解决方案:
for/D%%Y in(“C:\test\*”)do(
对于/D%%M in(“%%~Y\*”)执行以下操作(
对于“%%~M\*”中的/D%%D,请执行以下操作(
pushd“%%~D”和(
rar a-r-u-rr“.\%~nD.rar”“**”
邻苯二胺
)
)
)
)
您只是忘记了在与do
关键字相同的行上继续循环体(注意开头的(
在这里的同一行),并且您没有在内部循环中使用外部循环的元变量
这将创建.rar
存档文件,文件名为Day
,位于Month
文件夹中。如果您希望将它们放在Day
文件夹中,只需从中删除。\%~nD.rar'.*
前缀即可
和用于临时更改为当前的Day
目录,因此存档包含与该目录相关的路径,而不是与根目录或其他内容相关的路径。仅允许在路径的最后一个元素中使用,因此类似C:\test\*\*
的内容将不起作用
无论如何,您非常接近解决方案:
for/D%%Y in(“C:\test\*”)do(
对于/D%%M in(“%%~Y\*”)执行以下操作(
对于“%%~M\*”中的/D%%D,请执行以下操作(
pushd“%%~D”和(
rar a-r-u-rr“.\%~nD.rar”“**”
邻苯二胺
)
)
)
)
您只是忘记了在与do
关键字相同的行上继续循环体(注意开头的(
在这里的同一行),并且您没有在内部循环中使用外部循环的元变量
这将创建.rar
存档文件,文件名为Day
,位于Month
文件夹中。如果您希望将它们放在Day
文件夹中,只需从中删除。\%~nD.rar'.*
前缀即可
和用于临时更改为当前的Day
目录,因此存档包含相对于该目录的路径,而不是根目录或其他路径。您可以将if
s放入for循环中,如if%%A eq“Day”(“C:\Program Files\WinRAR\rar.exe”A-r-u-rr)
我可以在那里放一张通配符吗?所有的日子都是数字。不幸的是,不可以,但是你可以用(C:\test\day*)做一个for循环。
你可以在for循环中放如果如果%%a eq“day”(“C:\Program Files\WinRAR\rar.exe”a-r-u-rr)
我可以在里面放一张通配符吗?所有的日子都是数字。不幸的是,不可以,但是你可以用(C:\test\day*)做一个for循环
我认为这没有达到预期效果。它只是创建了一个rar文件,其中包含year1和父文件夹的所有内容,然后是另一个名为year2的文件,其中包含父文件夹的内容,包括以前的rar等。我需要在place@aschipfl,不应该是(“%%~Y\*”中的/D%%M的)在rar
命令行中,将“*.*”
替换为“%~D\*.*”
,用于(“%%M\*”
”)中的/D%%D
应该这样做。*.rar
文件应该放在哪里?在各自的Day文件夹中?我想,以我上面评论的例子@dominique120为例,您应该使用rar a-r-u-rr“%%~B\%%~nxC.rar”“%%~C\*”
作为您的命令。即使用自动大小恢复记录,将日目录的所有文件和子目录添加并更新到与日同名的RAR存档中,并位于月目录中。对于上面的答案,我希望是RAR a-r-u-rr“%%~M\%%~nxD.RAR”“%%~d\*”
@dominique120,首先,您应该使用的命令是(如果存在)
,而不是(如果存在)
!请注意,虽然我们很乐意提供帮助,但每个帖子都应该有一个问题。一个人或多个人曾帮助您解决最初发布的问题,但他们尚未注册到未来的支持名单与你一起。在另一个文件夹的umberella下问更多问题可能会对你在这里的未来体验有害。我认为这没有达到预期效果。它所做的是创建一个rar文件,其中包含year1和父文件夹的所有内容,然后创建另一个名为year2的文件,其中包含父文件夹的内容,包括上一个文件夹rar等等。我需要rar中标题为“day”的文件夹place@aschipfl,如果不是for/D%%M in(“%%Y\*”)do(for/D%%D in(“%%M\*”)
,则在rar
命令行中,将“*****”
替换为“%%D\***”
应该这样做。*.rar
文件应该放在哪里?在各自的Day文件夹中?我想,以我上面评论的例子@dominique120为例,您应该使用rar a-r-u-rr“%%~B\%%~nxC.rar”“%%~C\*”
作为您的命令。即使用自动大小恢复记录,将日目录的所有文件和子目录添加并更新到与日同名的RAR存档中,并位于月目录中。对于上面的答案,我希望是RAR a-r-u-rr“%%~M\%%~nxD.RAR”“%%~d\*”
@dominique120,首先,如果存在,您应该使用的命令是(如果存在)
,而不是(如果存在)
!请注意,虽然我们很乐意提供帮助,但每个帖子都应该有一个问题。一个人或多个人帮助您解决最初发布的问题