![批处理脚本:将文件移动到具有相似名称的相应文件夹中](https://linux22.com/image/1606636/%E6%89%B9%E5%A4%84%E7%90%86%E8%84%9A%E6%9C%AC%EF%BC%9A%E5%B0%86%E6%96%87%E4%BB%B6%E7%A7%BB%E5%8A%A8%E5%88%B0%E5%85%B7%E6%9C%89%E7%9B%B8%E4%BC%BC%E5%90%8D%E7%A7%B0%E7%9A%84%E7%9B%B8%E5%BA%94%E6%96%87%E4%BB%B6%E5%A4%B9%E4%B8%AD.png)
我正在尝试建立无纸化诊所并以电子方式存储所有患者数据。我已经创建了 8000 个文件夹 (1 - 8000),现在需要将大约 16000 个 .pdf 文件移动到相应的文件夹中,例如“202 医疗救助卡”、“202 医生转诊单”、“202 病假条”需要移动到文件夹“202”。所有文件都存储在一个文件夹中。
先感谢您。
答案1
如果你的情况那简单,那么您应该继续发出类似于以下内容的操作系统命令:
MOVE 202* 202\
等等。
答案2
扩展该问题的其他当前答案:
在纯文本编辑器(例如 Windows 记事本)中打开一个新的文本文档并复制以下批处理指令:
FOR /L %%G IN (1,1,8000) DO ( MOVE ".\%%G *" ".\%%G\" )
将此文件保存为 ex.
sort_files.bat
。将此
.bat
文件放在与您想要排序的文件相同的文件夹中。sort_files.bat
通过双击它或从命令行执行它来运行。
注意事项
.\%%G *
假设文件名格式为例如。202 Medical Aid Card
如果您漏掉了空格(即.\%%G*
),您的文件将无法正确排序,最终会得到巨大的头痛(所以不要这样做!=P)。.\%%G\
假设您现有的文件夹与您的文件位于同一目录中。如果不是,请将其替换.
为您的文件夹目录的实际路径(例如C:\path\to\folder\directory\%%G\
)。在表达式中
(1,1,8000)
,最后一个值(例如8000
)决定总共处理多少个循环。在提交之前,您可能需要考虑先减少(1,1,8000)
到可管理的数量(例如)以测试批处理文件(并检查任何结果) 。(1,1,10)
(1,1,8000)
笔记
%%G
是用于计数循环的批处理变量。在循环处理过程中,它会被替换为数字。因此MOVE ".\%%G *" ".\%%G\"
变为 ex.MOVE ".\1 *" ".\1\"
。在命令中
MOVE ".\%%G *" ".\%%G\"
:从技术上讲,仅当路径包含空格(例如
".\%%G *"
)时才需要使用引号,但为了保持一致性,在源路径(.\%%G *
)和目标路径(.\%%G\
)中都应使用引号。.
是“当前目录”的简写形式。*
是通配符。因此,例如,.\%%G *
翻译为“当前目录中以%%G
(例如1
)开头,后跟空格和任何其他字符(*
)的任何文件”。
参考