【问题标题】:Batch move files to new subfolders based on name根据名称将文件批量移动到新的子文件夹
【发布时间】:2015-05-29 10:18:32
【问题描述】:

我使用的是 Windows 7,我有 50 万张图片存储在一个文件夹“C:\capture”中。这些图像形成330个图像序列,它们的命名如下:

1.0000000000.png 
...
1.0000003299.png
... ...
330.0000000000.png
...
330.0000000010.png

我想将它们移动到以名称的第一部分命名的 330 个子文件夹中。

C:\capture\1\1.0000000000.png 
...
C:\capture\1\1.0000003299.png
... ...
C:\capture\330\330.0000000000.png
...
C:\capture\330\330.0000000010.png

所以我基本上只对第一个 '.' 之前的所有内容感兴趣。在名字中。如何编写一个批处理文件来创建子文件夹并将相应的文件移动到其中?

【问题讨论】:

    标签: windows file sorting batch-file


    【解决方案1】:

    从 sokins 的回答中汲取灵感,我将参与其中...

    @echo off
    setlocal enabledelayedexpansion
    
    for %%i in (C:\capture\*.png) do (
        for /f "tokens=3 delims=.\" %%a in ('echo %%i') do (
        set prefix=%%a
        if not exist C:\capture\!prefix! md C:\capture\!prefix!
        move "%%i" C:\capture\!prefix!
    ) 
    )
    

    【讨论】:

      【解决方案2】:

      这是一个更通用的批处理脚本,即边界不可知,它会根据图像的“前缀”自动决定必须创建多少子文件夹,所以如果图像序列的数量发生变化,您不必修改它。

      @echo off
      
      set DIR="C:\capture"
      pushd %DIR%
      setlocal ENABLEDELAYEDEXPANSION
      for %%g in (*.png) do (
          set t=%%~nxg
          for /F "delims=." %%a in ("!t!") do (
              if not exist %%a (md %%a)
              move !t! %%a > nul
          )
      )
      endlocal
      popd
      

      【讨论】:

        【解决方案3】:

        从要处理的目录中的命令行执行(最好使用副本)

        for /l %a in (1 1 330) do (md %a 2>nul & if exist %a\ move /y "%a.*.png" %a\ )
        

        如果你想在批处理文件中使用它,百分号需要转义,将所有%a替换为%%a

        for /l %%a in (1 1 330) do (
            md %%a 2>nul 
            if exist %%a\ move /y "%%a.*.png" %%a\ 
        )
        

        它将生成所有前缀,并为每个前缀执行一个移动命令,将匹配的文件移动到最终文件夹(之前创建的)

        【讨论】:

        • @pupa Batch-Wizard 对“在批处理文件中执行此任务将非常复杂和肮脏”的回答:D
        猜你喜欢
        • 2017-06-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-12-06
        • 2013-01-15
        • 1970-01-01
        • 1970-01-01
        • 2016-09-11
        相关资源
        最近更新 更多