批处理脚本根据另一个文件夹名称(音乐库)创建文件夹

时间:2017-11-09 13:26:24

标签: file batch-file

我一直在搜索并尝试创建一个基本的批处理脚本,它将为目录中的每个专辑创建一个文件夹。 我可以展示我的图书馆的例子 audio folder exemple

我想 Artist1 - 1 / Artist1 - 2 / 艺术家1 - 3 / Artist1 - ... / Artist2 - 1 / Artist2 - ... / ...

在artist1,artist2,artist3 ...文件夹中移动了单个文件夹。将复制的艺术家名称删除也很好,但这不是必需的。 如果它也没有区分非上限特征和上限,那将是很好的。

我在一个文件夹中有3000张专辑,手动编辑很痛苦。手动编辑需要我很多工作,批处理文件也可能对将来的使用更有用。 我已经看到文件到文件夹批处理和其他一些但我不确定如何为我的目的编辑它们.. bulkrenameutility 看起来不错,但不确定它能达到我需要的效果

编辑1 - 我见过这样的东西看起来不错。 但我希望能够选择一个文件夹,而不是一个名为.psd或.jpg

的文件

//////

@echo off
setlocal enabledelayedexpansion
for %%A in (*.psd *.jpg) do (
   echo file found  %%A
   for /f "delims=" %%B in ("%%A") do set fname=%%~nB
   for /f "delims=" %%C in ("%%A") do set fextn=%%~xC
   for /f "tokens=1* delims=_" %%D in ("!fname!") do set folname=%%D
   echo folder name !folname!
   if not exist "!folname!" (
      echo Folder !folname! does not exist, creating
      md "!folname!"
   ) else (
      echo Folder !folname! exists
   )
   echo Moving file %%A to folder !folname!
   move "%%A" "!folname!"
   )
echo Finished
pause

//////

基本上就是这样做

//////

@echo off

:: Needed because you are working with variables that are immediately called
setlocal enabledelayedexpansion

:: Start of the loop to get all files with a psd or jpg Extension
for %%A in (*.psd *.jpg) do (
   echo file found  %%A

:: Grabs only the file name
   for /f "delims=" %%B in ("%%A") do set fname=%%~nB

:: Grabs only the extension
   for /f "delims=" %%C in ("%%A") do set fextn=%%~xC

:: Using the File name it separates it into 2 part using "_" as a delimiter so 120_low becomes 120 and low
   for /f "tokens=1* delims=_" %%D in ("!fname!") do set folname=%%D
   echo folder name !folname!

:: Checks for the existence of the folder, if the folder does not exist it creates the folder
   if not exist "!folname!" (
      echo Folder !folname! does not exist, creating
      md "!folname!"
   ) else (
      echo Folder !folname! exists
   )

:: Moves the file to the folder
   echo Moving file %%A to folder !folname!
   move "%%A" "!folname!"
   )
echo Finished

//////

https://www.computerhope.com/forum/index.php?topic=152980.0

1 个答案:

答案 0 :(得分:1)

你的问题不明确。 很多的不完整细节。您应该在问题中列出某些输入文件夹中的以及带有此类输入的所需输出。例如,使用此输入:

Abdulla Rashim - weldiya (2012)
Abdulla Rashim - Weldiya E.P. (WAV)
Abdulla Rashim - A Shell of Speed
Abdulla Rashim - Unanimity

获取此输出:

Abdulla Rashim 
    weldiya (2012)
    Weldiya E.P. (WAV)
    A Shell of Speed
    Unanimity

编辑:规格已相应更改为以下说明:

艺术家名称出现在" - "之前的每个当前文件夹中。 除了最后一个字符,必须是一个将要删除的空格,并且相册名称是" - "之后的部分。 除第一个字符外,必须是要删除的空格

下面的批处理文件可以:

@echo off
setlocal EnableDelayedExpansion

for /F "tokens=1* delims=-" %%a in ('dir /AD /B') do (
   set "part1=%%a" & set "part1=!part1:~0,-1!"
   set "part2=%%b" & set "part2=!part2:~1!"
   if not exist "!part1!" md "!part1!"
   move "!part1! - !part2!" "!part1!\!part2!"
)

如果您想要更清晰的答案,您应该发布更清晰的问题......