将两级的每个文件夹向上移动一级



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

当前,记录的文件按名称字段存储,然后按记录编号存储。我的上一任老板坚持要能够通过窗口而不是记录界面来显示记录。我需要解决这个问题,因为我需要能够创建没有名称字段的记录。

所以这是当前的结构

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/,做了一个 * 搜索,等待它加载这些文件夹中的每个文件,选择所有编号的文件夹,然后将它们复制/粘贴到我想要它们的位置。所以不要着急,但我很好想如何使用批处理文件来做这件事,以便将来的项目。

> 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:pathRecordfiles"
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

这个呢(未经测试(:

pushd "D:pathtoRecordFiles" || 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

最新更新