File 批处理:基于第一个零件文件名创建文件夹;将文件复制到该文件夹中

File 批处理:基于第一个零件文件名创建文件夹;将文件复制到该文件夹中,file,batch-file,copy,directory,File,Batch File,Copy,Directory,我有一个文件夹,里面有数百万张小图片。我想把第一个12.288文件放在一个文件夹中,然后把下一个12.288文件放在另一个文件夹中,依此类推。。。始终根据文件名的第一部分。这些文件的名称如下所示: GRID_00000_01 GRID_00000_02 直到 然后是下一组文件: GRID_00001_01 直到 这种情况一直持续到电网12288 我希望批处理为以该文件名开头的所有文件创建一个文件夹GRID\u00000,然后将所有文件放入其中。然后它必须对下一组文件执行相同的操作,以此类推

我有一个文件夹,里面有数百万张小图片。我想把第一个12.288文件放在一个文件夹中,然后把下一个12.288文件放在另一个文件夹中,依此类推。。。始终根据文件名的第一部分。这些文件的名称如下所示:

GRID_00000_01

GRID_00000_02
直到

然后是下一组文件:

GRID_00001_01
直到

这种情况一直持续到电网12288

我希望批处理为以该文件名开头的所有文件创建一个文件夹
GRID\u00000
,然后将所有文件放入其中。然后它必须对下一组文件执行相同的操作,以此类推。我不知道我是否说清楚了,因为我真的不太懂编程

我的系统是windows 8.1

源目录称为:

D:\photoshop\test\grid_04\droplet\Bilder
D:\photoshop\test\grid_04\droplet\geordnet
目标目录称为:

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
它没有指定目标目录。但实际上这并不是必须的。如果在原始文件夹中创建文件夹也很好。

@ECHO OFF
SETLOCAL
设置“sourcedir=U:\sourcedir”
设置“destdir=U:\destdir”
对于/f“tokens=1,2,*delims=%%a IN('dir/b/a-d”%sourcedir%\grid'.*.*.*')DO(
回显(MD“%destdir%%\%%a\%%b”2>nul
回显(移动“%sourcedir%\%%a\%%b\%%c”“%destdir%\%%a\%%b\%%a\%%b\%%c”
)
后藤:EOF
您需要更改
sourcedir
destdir
的设置以适应您的环境

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


所需的移动命令仅用于测试。
ECHO
在验证命令正确后,更改
ECHO(MOVE
MOVE
以实际移动文件。追加
>nul
以抑制报告消息(例如
1个文件已移动

这更像是一个photoshop问题,而不是一个编程问题。我在photoshop中没有找到解决方案。这就是为什么我后来想整理文件的原因。@sjoy抱歉,这篇博文是写给Casey Rule的。@sjoy我在互联网上找到了一些东西,首先我认为这是解决方案(我把它贴在了我原来的博文中)。我用一个文件较少的文件夹试过了,效果不错,但用原来的文件夹就不行了。您好。您不想在问题中发布答案中的代码。只需像以前一样在答案末尾留下注释。您可以“回滚”您在问题中添加我的代码的编辑。哦,但我确实看到了问题。在新代码中,请确保同时更改顶部的dest和src路径。是的,当然可以移动,叹气。恐怕我不得不向您借用。