2017-04-03 146 views
-2

第一次海报和“非常”有限的经验。我一直负责使用PDF(约100,000+)并对其进行分类。文件名是123456700.PDF我想将这些文件分成不超过5,000个文件的文件夹。因此,根据文件名中的第6个数字,我想创建一个文件夹123455000(如果第6个数字等于或大于5)和123450000(如果第6个数字小于5)。然后我想将该文件移动到刚刚创建的文件夹中。我希望可以在选定的文件夹上运行批处理/脚本文件来完成此任务。预先感谢所有答复!根据文件名中的第6个数字创建文件夹,创建文件夹并将文件移动到该文件夹​​中

+0

我们需要更多的细节。所有文件名都是相同的长度还是有可变长度。例如,第6个字符总是我们想要的,所以我们可以很容易地进行索引? –

+0

是的所有文件名将是相同的长度,第6个字符将成为文件夹创建的决定编号。 – koonce0313

+0

你能否明确地定义文件夹是最大5000个文件还是第六个字符的数字?正如您已经指出存在超过100000个文件并且文件名长度相同,只有9999个文件适合您的方案,因此只需要两个文件夹。 _其他90000个文件发生了什么?_ – Compo

回答

-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 
} 

这并不完全工作/正确的,但它应该给你一个好的想法做什么。

+0

它不一定要在批处理(我只是认为这将是最简单的)。谢谢你的快速反应! – koonce0313

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%" 
) 

编辑子位置从零开始,不得不改变抵消。

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) 
相关问题