批处理脚本求助:提取文件夹名称分段并重构目录层级
批处理脚本求助:提取文件夹名称分段并重构目录层级
嘿,各位懂批处理的大佬们能不能帮我解决这个问题?
我手上有一堆音乐文件夹,命名格式都是「Taylor Swift - 1989」这样的,每个文件夹里只有音乐文件和封面图。我需要一个批处理脚本实现以下操作:
- 提取文件夹名称里「-」分隔的第一部分(比如「Taylor Swift」),用这个名称创建一个新的父文件夹
- 将原来的文件夹移动到这个新父文件夹中,同时把原文件夹重命名为「-」分隔的第二部分(比如「1989」)
举个具体的例子:
原本的文件夹叫「taylor swift - 1989」,处理后会生成一个名为「taylor swift」的父文件夹,里面包含一个重命名为「1989」的子文件夹,所有音乐文件都保留在这个「1989」子文件夹里。
我自己试着写了一个脚本,但始终搞不定名称和文件夹的转换逻辑——移动的操作似乎没问题,但名称的拆分和重命名部分不对。下面是我写的脚本:
@echo off cd /d "%~dp0" setlocal enabledelayedexpansion for /d %%i in ("* - *") do 2>nul ( echo\ & set "_Folder=%%~i" echo\Folder found: ...\!_Folder:*\=! cd /d "%~dp0!_Folder:*- =!\." ) && 2>nul ( echo\Folder "!_Folder:*- =!" exists... & cd.. ) || 2>nul ( echo\Folder: ...\!_Folder:*- =! does not exist, creating... mkdir "%~dp0!_Folder:*- =!" & echo\Moving file ..\!_Folder:*- =! to folder !_Folder:*- =! move "%%~fi" "%CD%\!_Folder:*- =!" && echo\Moving file "%%~nxi" to folder "..\!_Folder:*- =!".. ) ) echo\Finished & %__APPDIR__%timeout.exe -t 60 & endlocal && goto=:EOF
求各位帮忙看看哪里出问题了,怎么调整才能实现我想要的效果?
备注:内容来源于stack exchange,提问作者Shane Cusack
相关产品推荐
相关产品推荐

