【问题标题】:Move files to folders based on file name根据文件名将文件移动到文件夹
【发布时间】:2023-08-21 23:28:01
【问题描述】:

我是批处理文件的新手,虽然已经彻底搜索并找到了类似但不涵盖我需要的主题。

我使用保存在 C:\Tempfolder 中的大量文档(.pdf、.doc、.xls)。完成编辑后,我会使用 9 位数字保存文件名,例如(305123123.pdf 或 306123123.pdf 或 .doc)

我正在寻找创建一个批处理文件,它将自动移动以开头的文件 305 到 C:\Users\Omer\Documents\aaCompany 或者如果 306 到 C:\Users\Omer\Documents\bbCompany

当我决定处理时,我可以随时在文件夹中保存超过 200 个文件。

我也很好奇批处理文件是否可以监视 C:\Tempfolder 并在不执行的情况下移动文件 305 或 306

非常感谢您的帮助。
我希望我已经提供了足够的信息来看看这是否可行。

【问题讨论】:

    标签: windows batch-file


    【解决方案1】:

    你可以做这样的事情:

    @Echo off &cls
    
    ::The Input Folder
    set $Dossier="C:\Tempfolder"
    
    ::The Output Folders
    set $Out305="C:\Users\Omer\Documents\aaCompany"
    set $Out306="C:\Users\Omer\Documents\bbCompany"
    
    ::The extensions to wait
    set "$Format=*.pdf,*.xls,*.doc"
    
    setlocal enabledelayedexpansion
    :Boucle
    cls&echo Waiting for file ...
    for /f %%a in ('dir /b/a-d %$Dossier%\%$Format% 2^>nul') do (
     set "$Fichier=%%a"
     echo Treating -^> %%a
     if "!$Fichier:~0,3!"=="305" move "%%~nxa" %$Out305%
     if "!$Fichier:~0,3!"=="306" move "%%~nxa" %$Out306%
    )
    
    ::Waiting ~5 secondes
    ping localhost -n 6 >nul
    
    ::Return to the loop
    goto:Boucle
    

    【讨论】:

    • 这很好用,谢谢你,也非常感谢你对代码的评论。
    • 嗨,我将批处理文件移动到我的桌面,但由于某种原因它停止工作,如果我想从我的桌面运行它,我需要做什么,再次感谢
    • 它应该在您的桌面上以相同的方式工作。检查文件夹的路径是否正确。