【发布时间】:2013-08-06 12:32:57
【问题描述】:
我正在尝试整理一个数据文件夹并编写了一个批处理文件来处理许多初步工作(删除空文件夹、删除垃圾文件等),但我在尝试处理时摔倒了包含重复文件夹中的文件。
这是当前情况的一个例子:
w:\Data\Corporations\555\20130101\Concat_000001\555_20130101_data.zip
w:\Data\Corporations\555\20130101\Concat_000002\555_20130101_data.zip
w:\Data\Corporations\555\20130101\Concat_000003\555_20130101_data.zip
w:\Data\Corporations\555\20130101\Concat_000004\555_20130101_data.zip
每个 YYYYMMDD 文件夹应该只有一个 Concat 文件夹,并且应该如下所示:
w:\Data\Corporations\555\20130101\Concat\555_20130101_data.zip
w:\Data\Corporations 中有数百个文件夹要处理,所以我想我需要首先找到任何名为 Concat_* 的文件夹,在同一个父文件夹中创建一个名为 Concat 的文件夹,然后移动任何压缩从 Concat_ 到 Concat。
我尝试了FOR /D in (Concat_*) 与MD 和MOVE 命令的各种组合,但到目前为止没有运气。我还尝试从FOR 语句中调用一个子例程,该语句将跳回树中的一个级别,创建一个名为 Concat 的文件夹,返回到 Concat_* 并移动 .zip 文件,但还是没有运气。
任何帮助将不胜感激。
干杯,
皮特
【问题讨论】:
-
在technet.microsoft.com/en-us/library/cc754900(v=ws.10).aspx,您可以找到一些文档,您可以在批处理文件的 for 循环中仅提取文件名或仅提取扩展名或文件名变量的目录部分。
-
Windows PowerShell 应该有能力实现这一点。
-
那么同名的 ZIP 怎么办?移动会覆盖同名文件。
-
感谢@FrankPl 的链接,我会看一下。我认为这对于我对命令的基本掌握来说太复杂了!
-
@Endoro - 同名的 .zip 文件都是一样的。我无法控制的不同进程有时会创建重复文件。它不是将这些写入同一个文件夹 (Concat),而是创建一个附加的参考编号 (Concat_00001) 的重复文件夹。我在此处理中的目标正是用它们的副本覆盖 zip 文件,所以我留下了正确的文件夹和一个 zip 文件的最终副本,并且所有 Concat_* 文件夹都为空以被删除。
标签: batch-file cmd wildcard batch-processing