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

mrjwm2

我需要帮助来移动库中的文件。我已经搜索并阅读了数小时,但找不到合适的解决方案(如果有的话)。

我的目录看起来像这样

  • 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:音乐\名称-标题\插图\ 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")

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

谢谢

用户名

尝试这个

@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
    )
)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章