【问题标题】:Batch Create folders based first part filename, move files into that folder批量创建基于第一部分文件名的文件夹,将文件移动到该文件夹​​中
【发布时间】:2014-11-06 14:18:05
【问题描述】:

查看此处的解决方案似乎无法准确找到要查找的内容,或者无法完全了解我如何修改现有脚本。我有一个 Windows 文件服务器。我的文档存储在目录结构中,年、月、周 01/02 等。例如,文件名的格式为 0053910001.1.D799D。第一部分是客户端标识符,可能有许多具有相同标识符的文件,例如 0053910001.2.D444D,0053910001.3.D584D 等。我需要一个 bat 文件脚本,它将遍历目录并创建一个名为客户端标识符 0053910001 的单独目录和然后将具有该标识符的所有文件复制到该目录中。

谢谢。

保罗,

【问题讨论】:

    标签: file batch-file copy


    【解决方案1】:

    我需要更多信息... 是像 "2014, 11, 01\0053910001.1.D799D" 或类似的目录结构 “2014\11\01\0053910001.1.D799D”?

    表示“D799D”的扩展名?

    客户端标识符是否总是包含 10 个数字/字母?

    您知道是否需要注意重复的文件名吗?

    应该在哪里创建目标文件夹?

    亲切的问候


    编辑:

    将其保存到驱动器 H 中的文件(例如“Cleanup.cmd”):

    @ECHO OFF
      IF NOT EXIST "Clients" MD "Clients"
      FOR /F "TOKENS=1* DELIMS=." %%A IN ('DIR 2014\* /s /b /a:-d') DO (
        IF NOT EXIST "Clients\%%~nA" MD "Clients\%%~nA"
        MOVE "%%~A.%%~B" "Clients\%%~nA"
      )
    

    说明:

    FOR /F "TOKENS=1* DELIMS=." %%A IN ('DIR 2014* /s /b /a:-d') DO (

    将搜索目录“2014”和所有子目录中的所有文件

    如果不存在 "%%~nA" MD "%%~nA"

    将根据文件名(无扩展名)创建一个文件夹,因此该文件夹将在根目录 H 中为例如“053920001”:

    移动 "%%~A.%%~B" "%%~dA\%%~nA"

    将移动上面创建的目录中的文件。


    为了测试,您可以将“move”替换为“copy”,这样所有的源文件都将保留在它们的位置。

    编辑以适应在子目录“clients”中放置文件和文件夹的需要

    【讨论】:

    • 目录结构会是这样的
    • 目录结构类似于 h:\2014\March\Week01\,具体取决于月 Week01、Week02 等的周数。在每个周目录中都有单独的文件 0053910001.1.D799D 有些会有相同的客户端标识符有些不同。我需要将文件分类到名为客户端标识符的单独文件夹中。因此,所有以 0053910001 开头的文件都将放在名为 0053910001 的文件夹中。
    • 您希望在哪个路径创建目标文件夹?
    • 好吧,这让事情变得过于复杂了。将所有文件拖放到单个目录中并不是一项伟大的任务,比如 YEAR。然后获取一个批处理文件,将所有与相同客户端标识符相关的文件排序到同名文件夹中,即 0053910001。
    • 我会在 c:\year 中拥有所有包含数据的文件夹,所以说在 c:\clients 中创建客户端文件夹
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-07
    • 2011-02-14
    相关资源
    最近更新 更多