我们目前使用的机器在输出数据时会生成复杂的文件夹结构,并希望以后简化生成数据的文件夹层次结构。
在我们当前的设置中,目录如下所示:
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文件移动到新位置
答案 0 :(得分:0)
你尝试过这样的事吗?
cd /d c:\dir01\dir02
forfiles /s /m "*.dcm" /c "cmd.exe /c move @path @path\..\.."
答案 1 :(得分:0)
这作为批处理文件应该执行第一部分:
c:\out\Dir02F
将c:\out\Dir02F\dir03\dir04\*
移至c:\out\Dir02F\*
编辑它以覆盖正确的文件夹,当然,也许最后添加一点来为每个文件夹调用您的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的调用。