我有一个文件夹,里面有十多万个 (100,000+) 个由脚本生成的 pdf 文件,需要根据文件名将它们移动到多个文件夹中。pdf 文件都这样命名:YY-nnnnn.pdf
其中 YY 是年份,nnnnn 是一年内的文件顺序,如下所示:
00-00001.pdf
00-00002.pdf
00-00003.pdf
每年大约有 25,000 个文件。我已经生成了四年的文件,还有六年的 pdf 需要生成。
我需要将这些文件移动到服务器。服务器具有以下文件夹结构:
D:.
├───00-00000
├───00-01000
├───00-02000
├───00-03000
├───00-04000
├───00-05000
├───00-06000
├───00-07000
├───00-08000
├───00-09000
├───00-10000
├───00-11000
每个年份最多可以有YY-25000
文件夹。文件需要根据前五个字符放入各自的文件夹中,如下所示:
├───00-00000
│ 00-00001.pdf
│ 00-00002.pdf
│ 00-00003.pdf
│ 00-00004.pdf
...
│ 00-00997.pdf
│ 00-00998.pdf
│ 00-00999.pdf
│
├───00-01000
│ 00-01000.pdf
│ 00-01001.pdf
│ 00-01002.pdf
我原本想使用该RoboCopy
实用程序,但不知道该如何正确编写脚本。也许需要一个小脚本。
答案1
找到了基于的解决方案这问题。移动文件的批处理文件是这样的:
@echo off
for /f "tokens=*" %%F in ('dir/b/a-d d:\temp\pdfprints\*.pdf') do call :sub1 %%F
goto :eof
:sub1
set name=%1
move d:\temp\pdfprints\%name% R:\%name:~0,5%000\%name%