将两个级别的每个文件夹下移一个级别

时间:2018-06-29 21:05:21

标签: database batch-file

我正试图撤消我不得不在数据库中实施的一个糟糕的设计决策,希望有一个可以解决此问题的批处理文件。

当前,用于记录的文件按名称字段存储,然后按记录编号存储。我的上任老板坚持要能够通过Windows而不是记录界面浏览记录。我需要解决此问题,因为我需要能够创建没有名称字段的记录。

这是当前结构

 Recordfiles
  John Smith
   230
    approvedpacket.pdf
    initialpacket.pdf
   232
    Approved packet.pdf
    Initialpacket.pdf
  Jane Frank
   343
    Deniedpacket.pdf

我需要的是它的外观

 Recordfiles
  230
  232
  343

因此,我需要将每个文件夹及其内容从/ recordfiles /下移两级。我已经尝试了来自各个站点的许多批处理文件解决方案,但到目前为止还没有运气。每个按钮只弹出命令窗口一会儿。

值得注意的是:我对此非常陌生,我只知道一些非常入门级的视觉基础,并且没有经过正规的培训。任何帮助将不胜感激。

编辑:好的,我找到了一种方法。我去了/ recordfiles /,进行了*搜索,等待它加载那些文件夹中的每个文件,选择所有编号的文件夹,然后将它们复制/粘贴到我想要的位置。因此,我们并不着急,但是我很想知道如何为将来的项目使用批处理文件来做到这一点。

2 个答案:

答案 0 :(得分:0)

> tree /F
A:.
│   _.cmd
│
└───Recordfiles
    ├───Jane Frank
    │   └───343
    │           Deniedpacket.pdf
    │
    └───John Smith
        ├───230
        │       approvedpacket.pdf
        │       initialpacket.pdf
        │
        └───232
                Approved packet.pdf
                Initialpacket.pdf

这一行进行移动

> for /f "delims=" %A in ('dir /B/S/AD "???" ^|findstr "\\[0-9][0-9][0-9]$" ') do @Move "%A" "%A\..\.."

在批处理文件中,将百分号加倍

@Echo off
CD /D "X:\path\Recordfiles"
for /f "delims=" %%A in (
    'dir /B/S/AD "???" ^|findstr "\\[0-9][0-9][0-9]$" '
) do Move "%%A" "%%A\..\.."

> tree /F
Auflistung der Ordnerpfade für Volume RamDisk
Volumeseriennummer : 5566-7788
A:.
│   _.cmd
│
└───Recordfiles
    ├───230
    │       approvedpacket.pdf
    │       initialpacket.pdf
    │
    ├───232
    │       Approved packet.pdf
    │       Initialpacket.pdf
    │
    ├───343
    │       Deniedpacket.pdf
    │
    ├───Jane Frank
    └───John Smith

答案 1 :(得分:0)

这(未试用)呢?

pushd "D:\path\to\RecordFiles" || exit /B 1
for /F "delims= eol=|" %%A in ('dir /B /A:D "*"') do (
    for /D %%B in ("%%~A\*") do (
        move /Y "%%~B" "%%~dpA%%~nxB"
    )
    rmdir "%%~A"
)
popd