用于将文件向上移动X级的批处理文件或脚本

时间:2014-11-20 23:47:59

标签: windows batch-file parent move

我们目前使用的机器在输出数据时会生成复杂的文件夹结构,并希望以后简化生成数据的文件夹层次结构。

在我们当前的设置中,目录如下所示:

C:\ Dir01 \ Dir02 \ Dir03 \ Dir4 \ *。*
C:\ Dir01 \ Dir02A \ Dir03 \ Dir4 \ *。*
C:\ Dir01 \ Dir02B \ Dir03 \ Dir4 \ *。*
C:\ Dir01 \ Dir02C \ Dir03 \ Dir4 \ *。*
C:\ Dir01 \ Dir02D \ Dir03 \ Dir4 \ *。*

Dir01文件夹是我们复制所有样本数据的地方

为每个唯一样本创建Dir02文件夹,每个文件夹都有一个唯一的名称。

Dir03只包含Dir04文件夹

Dir03和Dir04通常每次具有相同的名称(在名为Dir02的唯一内容中)

Dir04是所有实际数据存在的地方,并且每个样本都将包含一系列文件名...即。 file.001 file.002 file.003

理想情况下,Dir04数据会移动到每个样本的Dir02文件夹中,然后移动后应删除Dir03和Dir04文件夹。

我想在移动后进一步分离Dir02中的特定文件,并在Dir01下创建一个新文件夹(Dir02A)以重新定位这些文件。

最后,我想得到一个像这样的目录结构:

C:\ Dir01 \ Dir02 \ *。*
C:\ Dir01 \ Dir02A \ *。*
C:\ Dir01 \ Dir02B \ *。*
C:\ Dir01 \ Dir02C \ *。*
C:\ Dir01 \ Dir02D \ *。*

一旦完成,我有一个批处理文件,它使用robocopy复制整个目录结构,并将非* .dcm文件分离到一个新文件夹中,但这仍然留下了我复杂的目录结构。

robocopy.exe "%SourcePath%" "%DestPath%" /s /xf *.dcm

这是我的主要目标......摆脱不必要的目录导航。

===============
回顾:
1)在Dir01下面生成数据到唯一文件夹(Dir02,Dir02A,Dir02B ......)
2)运行批处理文件或脚本,对Dir01下的数据进行后处理 3)将数据从每个Dir04子文件夹下移动到其父Dir02,Dir02A,Dir02B等文件夹
4)清理(现在为空)每个Dir02,Dir02A,Dir02B等文件夹下的Dir03和Dir04文件夹
5)运行我的Robocopy批处理文件,将所有非* .dcm文件移动到新位置

2 个答案:

答案 0 :(得分:0)

你尝试过这样的事吗?

cd /d c:\dir01\dir02
forfiles /s /m "*.dcm" /c "cmd.exe /c move @path @path\..\.."

答案 1 :(得分:0)

这作为批处理文件应该执行第一部分:

  1. 遍历每个示例文件夹
    1. 对于每一个,例如c:\out\Dir02Fc:\out\Dir02F\dir03\dir04\*移至c:\out\Dir02F\*
    2. 删除Dir03和Dir04子文件夹
  2. 编辑它以覆盖正确的文件夹,当然,也许最后添加一点来为每个文件夹调用您的Robocopy脚本。简要测试,但首先在副本上试一试。

    for /D %%s in (c:\out\*) do (
        move "%%s\Dir03\Dir04\*" "%%s\"
        rmdir "%%s\Dir03\Dir04"
        rmdir "%%s\Dir03"
    )
    

    编辑注释:它将处理Dir01中的每个Dir02文件夹。我认为它可以重写,即使:

    for /D %%s in (d:\t\*) do (
        for /D %%y in (%%s\*) do (
            for /D %%z in (%%y\*) do (
                move "%%z\*" "%%s\"
            )
            rmdir /Q /S %%y
        )
    )
    

    至少在我的快速测试中,无需关心Dir03和Dir04的调用。