【问题标题】:Batch: create folders based on first part filename; copy files into that folder批处理:根据第一部分文件名创建文件夹;将文件复制到该文件夹
【发布时间】:2014-12-04 18:31:59
【问题描述】:

我有一个包含数百万张小图像的文件夹。我想将前 12.288 个文件放在一个文件夹中,然后将下一个 12.288 个文件放在另一个文件夹中,依此类推……始终根据文件名的第一部分。文件命名如下:

GRID_00000_01

GRID_00000_02

直到

GRID_00000_12288

然后是下一组文件:

GRID_00001_01

直到

GRID_00001_12288

这种情况一直持续到GRID_12288_12288

我希望批处理为所有以该文件名开头的文件创建一个文件夹GRID_00000,然后将所有文件放入其中。然后它必须对下一组文件做同样的事情,依此类推。我不知道我是否说清楚了,因为我对编程真的了解不多。

我的系统是windows 8.1

源目录被调用:

D:\photoshop\test\grid_04\droplet\Bilder

目标目录被调用:

D:\photoshop\test\grid_04\droplet\geordnet

我在网上找到了这个:

    @echo off

    for /f %%a in ('dir /a-d /b') do (
      if not "%%~dpnxa"=="%~dpnx0" call :func "%%~a"
    )

    goto :EOF

    :func
    set file=%~1
    set dir=%file:~0,10%
    md "T%dir%" 2>nul

move "%file%" "T%dir%" 
goto :EOF

它没有指定目标目录。但实际上没有必要。如果在原始文件夹中创建文件夹也很好。

【问题讨论】:

  • 这更像是一个 Photoshop 问题,而不是一个编程问题。
  • 我在 Photoshop 中没有找到解决方案。这就是我想事后整理文件的原因。
  • @sjoy 抱歉,这个帖子是为凯西规则准备的。
  • @sjoy 我在互联网上找到了一些东西,首先我认为这是解决方案(我将其粘贴在我的原始帖子中)。我尝试使用包含较少文件的文件夹并且它可以工作,但使用原始文件夹却没有。
  • 嗨。您不想从问题的答案中发布代码。只需像您一样在答案末尾留下评论即可。您可以“回滚”在问题中添加我的代码的编辑。 哦,但我确实看到了问题。在新代码中,请务必更改顶部的 dest 和 src 路径。

标签: file batch-file copy directory


【解决方案1】:
@ECHO OFF
SETLOCAL
SET "sourcedir=U:\sourcedir"
SET "destdir=U:\destdir"

FOR /f "tokens=1,2,*delims=_" %%a IN ('dir /b /a-d "%sourcedir%\grid_*_*" ') DO (
 ECHO(MD "%destdir%\%%a_%%b" 2>nul
 ECHO(MOVE "%sourcedir%\%%a_%%b_%%c" "%destdir%\%%a_%%b\%%a_%%b_%%c"
)

GOTO :EOF

您需要更改sourcedirdestdir 的设置以适应您的情况。

所需的 MD 命令仅用于测试目的ECHOed。 验证命令正确后,将ECHO(MD 更改为MD 以实际创建目录。 2>nul 抑制错误消息(例如,当目录已经存在时)

所需的 MOVE 命令仅用于测试目的ECHOed。 验证命令正确后,将ECHO(MOVE 更改为MOVE 以实际移动文件。附加>nul 以禁止报告消息(例如1 file moved

【讨论】:

  • 是的,当然是移动,叹息。恐怕我得向你借那个。
猜你喜欢
  • 2017-06-07
  • 1970-01-01
  • 2015-07-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多