批处理文件在文件夹中创建新的子文件夹,将文件移动到新创建的子文件夹,用于目录中的所有文件夹

时间:2015-11-13 19:04:23

标签: windows batch-file

我需要帮助来移动我的库中的文件。我已搜索并阅读了几个小时,无法找到合适的解决方案。

我的目录看起来像这样

  • d:音乐\
    • D:音乐\名称 - 标题\
    • D:音乐\名称 - 标题\ xxxx.jpg
    • D:音乐\名称 - 标题\ xxxx-type.jpg
    • D:音乐\名称 - 标题\ xxxx.xml

D:Music中有数以千计的这些条目。文件夹名称'名称 - 标题'各有不同。

我想将xxxx-type.jpg移动到名为' artwork'的新文件夹中。在'名称 - 标题'夹。我要移动的文件都以' -type.jpg'。

结尾

新目录如下所示:

  • d:音乐\
    • D:音乐\名称 - 标题\
    • D:音乐\名称 - 标题\ xxxx.jpg
    • D:音乐\名称 - 标题\ xxxx.xml
    • D:音乐\名称 - 标题\艺术品
      • D:Music \ Name - Title \ artwork \ xxxx-type.jpg

我试过这个:

for /d %%a in ("D:Music\Name - Title\*") do mkdir "%%~fa\artwork" 2>nul  

这会在'名称标题'中创建新文件夹。文件夹。但显然不会移动文件。

我也试过这个来创建文件夹并移动文件:

@echo off
    for /f "delims=" %%a D:Music\Name - Title\ ('dir /s/b/a-d *.* ^| find /i "*-type.jpg"') do (
    if not exist "%%~dpaartwork" md "%%~dpaartwork"
    move "%%~fa" "%%~dpaartwork")

以上什么都不做。任何帮助表示赞赏。

由于

2 个答案:

答案 0 :(得分:0)

试试这个

@echo off& SetLocal
for /f "delims=" %%a in ('dir /ad /b "D:\Music\"') do (
    cd /d "%%~fa"
    if exist *-type.jpg (
        if not exist artwork md artwork
        move *-type.jpg artwork
    )
)

这将直接浏览D:\Music中的所有文件夹,如果该文件夹中有一些*-type.jpg个文件,它会将它们移动到子文件夹artwork(如果有的话,将会创建它们不存在)。

如果您在子文件夹中也有*-type.jpg个文件夹,则可以使用此

@echo off& SetLocal
for /f "delims=" %%a in ('dir /ad /b /s "D:\Music\"') do (
    cd /d "%%~fa"
    if /i not "%%~na"=="artwork" if exist *-type.jpg (
        if not exist artwork md artwork
        move *-type.jpg artwork
    )
)

答案 1 :(得分:0)

这应该有效:

@echo off

for /R D:\Music %%F in (*-type.jpg) do (
   if not exist "%%~pFartwork" md "%%~pFartwork"
   move "%%F" "%%~pFartwork"
)