【发布时间】:2017-09-16 05:42:25
【问题描述】:
所以,这对我来说是一个特别令人费解的问题。我愿意使用任何我必须使用的东西,但我通常只编写简单的批处理文件。
我在我工作的医院有一个庞大的研究项目,我正在处理的数据以 4 位数的主题标识符和时间戳呈现给我,如下例所示:
6443_20170419_141200416
6443_20170419_141200447
6443_20170419_141200500
6476_20170419_141200537
6476_20170419_141201112
等等
我实际上有数千个这样的文件夹,每个文件夹中都有 1 到 3 个文件名很长的文件 - 唯一的共同点是 .DCM 扩展名。
我想做的是有一个脚本,它将提取文件夹名称的前 4 个字符,使用该 4 个字符的名称创建一个新目录,然后将文件夹中具有匹配前缀的所有文件复制到新创建的文件夹。
例如,假设所有以 6443 开头的文件夹中有多个 .DCM 文件。我想创建一个名为 6443 的新文件夹(在与当前目录不同的位置,以避免意外删除),然后将每个目录中的所有 .DCM 文件移动到新文件夹中。
我有一个 .TXT 文件,其中包含我一直用于各种其他脚本任务的所有主题 ID #,使用 FOR /F 遍历此文件,如果这让任何人有解决方案的想法。
这一次真是让我头疼。救命!!!
----- 附加信息 ----- 我一直在进步,但还是不对。我正在使用如下所示的脚本,但它将每个文件夹中的所有文件移动到每个新创建的文件夹中,而不是按 4 位前缀对它们进行排序。
@ECHO on
cls
FOR /f "delims=_" %%a IN ('dir /b /ad "*_*_*"') DO (
if not exist %%a MD .\combined\%%a
FOR /d /r %%d IN ("*") DO (
copy %%d\* .\combined\%%a\*
)
)
【问题讨论】:
标签: batch-file