要更具体地了解问题,我有一个文件夹层次结构。批处理删除没有自己子文件夹的所有子文件夹
Render/a/b/c/d/e/f
其中Δf是1和4
例如,你可以有之间的数字.. 渲染/ 1/1/3/2/4/1 /(Somefile.jpg)
由于空间限制,我不需要最后一层子文件夹或其内容。
我的想法是编写一个批处理文件,该文件将遍历所有文件夹及其子文件夹,直到找到不包含其他子文件夹的文件夹,表示其最后一个文件夹,然后沿着文件夹删除文件夹与其内容。
系统设置的方式是否有基础渲染。该渲染被分成4个子渲染,从而得到更详细的(因此1-4个子目录)。 因此,每个文件夹可能包含4个图像,以及4个包含更小,更详细图像的子目录。 该文件夹不需要拥有所有4个子目录,这取决于该特定渲染的大小。 最后,有一组最不详细的图像。
我能理解 RD/Q/S方向1 一块代码,与 为%%我在(套) 但能够将它们组合在一起来执行这项任务,我大惑不解一起。
1)找到渲染目录的所有子目录。 2)移到第一个目录,找到所有的子目录。 3)重复步骤2 4)如果没有子目录,我知道它的最后一次渲染 5)删除内容和目录 6)移回目录,并继续通过 7)重复整个过程与第2,3,4目录。
我可以用c#执行这个任务,但我需要有一个.bat文件。
编辑: 我原来是为了批处理,是因为它很简单,只需要一个文件。但是,我决定使用perl脚本,因为两个文件并不比一个糟糕。
# read zoomlevel from generated file.js
my $zoomlevel=0;
my $maxzoom=0;
if (open OC,"Render/file.js")
{
foreach (<OC>)
{
if (index($_, "zoomLevels") != -1)
{
@data = split(' ', $_);
$zoomlevel=substr $data[1],0,1;
print "$data[1]\n";
print "$zoomlevel\n";
}
if (index($_, "maxZoom") != -1)
{
@data = split(' ', $_);
$maxzoom=substr $data[1],0,1;
print "$data[1]\n";
print "$maxzoom\n";
}
}
my $numdelete=$zoomlevel-$maxzoom;
print "I'm going to delete $numdelete zoomlevels.\n";
for($count = 0; $count < $numdelete; $count++) {
print "deleting zoomlevel ".($zoomlevel-$count).".\n";
my $delstr = "Render/render/".'*/' x ($zoomlevel-$count)."*.jpg";
unlink glob "$delstr";
}
}
else
{print "couldn't open file\n";}
然后我只是创建了一个运行perl脚本的批处理文件。
@echo off
perl removal.pl
pause
堆栈溢出是专业和发烧友程序员的问题和答案网站。问题必须**表现出对所解决问题的最小理解**。告诉我们你试图去做什么,为什么它没有工作,以及它应该如何工作。另请参阅:[堆栈溢出问题清单](http://meta.stackexchange.com/questions/156810/stack-overflow-question-checklist)。 – Endoro