根据文件名中的第6个数字创建文件夹,创建文件夹并将文件移动到该文件夹​​中

时间:2017-04-03 15:42:40

标签: batch-file

第一次发布海报和“非常”有限的经历。我的任务是接受PDF(大约100,000 + - )并对它们进行排序。文件名是123456700.PDF我想将这些文件分成不超过5,000个文件的文件夹。因此,根据文件名中的第6个数字,我想创建一个文件夹123455000(如果第6个数字等于或大于5)和123450000(如果第6个数字小于5)。然后我想将该文件移动到刚刚创建的文件夹中。我想要一个可以在选定文件夹上运行的批处理/脚本文件来完成此任务。提前感谢所有回复!!

3 个答案:

答案 0 :(得分:0)

@Echo off&SetLocal EnableExtensions EnableDelayedExpansion
CD /D "X:\path\to\pdfs"
For %%A in (*.pdf) Do (
  Set "Filename=%%~nA"
  If !FileName:~5,1! lss 5 (
    Set Folder=!FileName:~0,5!0000
  ) Else (
    Set Folder=!FileName:~0,5!5000
  )
  If not Exist "%Folder%" MkDir "%Folder%"
  Move %%A "%Folder%"
)

编辑子字符串位置基于零,必须更改偏移量。

答案 1 :(得分:0)

类似于LotPings的回答:

@Echo Off

Set "SrcDir=C:\Users\AName\Documents"
Set "DstDir=C:\Users\AName\Documents\PDFs"

If Not Exist "%SrcDir%\*.pdf" Exit/B

For %%A In ("%SrcDir%\*.pdf") Do (Set "FName=%%~nA"
    SetLocal EnableDelayedExpansion
    If !FName:~-4! Lss 5000 (Set DstNum=0000) Else Set "DstNum=5000"
    If Not Exist "%DstDir%\!FName:~,-4!!DstNum!\" (
        MD "%DstDir%\!FName:~,-4!!DstNum!")
    Move "%%~A" "%DstDir%\!FName:~,-4!!DstNum!"
    EndLocal)

答案 2 :(得分:-1)

我会尝试给这个破解,但我通常不会批处理,但我至少可以让你去...

for %%f in (*.pdf) do {
  set TEMP = %f:5%
  if exists <your path>/%TEMP% <do nothing>
  if not exists <your path>/%TEMP% mkdir <your path>/%TEMP%
  <move file to this new directory
}

这不完全正常/正确,但它应该让你知道该怎么做。