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