我有一个文件夹,结构如下。
Year
Month
Day
file
file
file
Day
file
file
Year
Month
Day
file
file
file
Day
file
file
我想把所有的 "日 "文件夹压缩在原地,以便以后移动。
到目前为止,我已经尝试了一些我在SO上找到的替代方案,但我似乎无法得到我需要的结果,我甚至无法通过我自己的尝试来解决语法错误。这是我目前的情况。
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 (
for /D %%M in ("%%~Y\*") do (
for /D %%D in ("%%~M\*") do (
pushd "%%~D" && (
rar a -r -u -rr "..\%%~nD.rar" "*.*"
popd
)
)
)
)
你只是忘了把循环体延续在同一条线上 do
关键字 (
在这里的同一行),而你错过了使用的是 for
襻 外环的元变量放在内环中。
这将创建 .rar
归档文件以 Day
并位于 Month
文件夹。如果你想把它们放到 Day
文件夹代替,只需删除 ..\
前缀 ..\%%~nD.rar" "*.*
.
pushd
和 popd
是用来临时换成当前的 Day
目录,所以存档中包含的是相对于该目录的路径,而不是根目录之类的。