Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 批量递归压缩所有嵌套子目录_Windows_Batch File_Cmd - Fatal编程技术网

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,首先,如果存在,您应该使用的命令是
(如果存在)
,而不是
(如果存在)
!请注意,虽然我们很乐意提供帮助,但每个帖子都应该有一个问题。一个人或多个人帮助您解决最初发布的问题