File 基于其他文件夹名称(音乐库)创建文件夹的批处理脚本

File 基于其他文件夹名称(音乐库)创建文件夹的批处理脚本,file,batch-file,File,Batch File,我一直在搜索并尝试创建一个基本的批处理脚本,该脚本将为目录中的每个相册创建一个文件夹。。 我可以展示我的图书馆的一个例子 我想要 艺人1-1/ 艺人1-2/ 艺人1-3/ 艺人1-/ 艺人2-1/ 艺术家2-/ 在artist1、artist2、artist3…文件夹中,单个文件夹被移动。删除复制的艺术家名称也很好,但这不是必需的。 如果不区分非大写字符和大写字符,那就太好了 我有3000个相册在一个文件夹中,手动编辑是一件痛苦的事情。手动编辑需要我做很多工作,也许批处理文件对将来的使用也更

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

我想要 艺人1-1/ 艺人1-2/ 艺人1-3/ 艺人1-/ 艺人2-1/ 艺术家2-/

在artist1、artist2、artist3…文件夹中,单个文件夹被移动。删除复制的艺术家名称也很好,但这不是必需的。 如果不区分非大写字符和大写字符,那就太好了

我有3000个相册在一个文件夹中,手动编辑是一件痛苦的事情。手动编辑需要我做很多工作,也许批处理文件对将来的使用也更有用。 我见过文件到文件夹的批处理和其他一些,但我不确定如何编辑它们。。 笨重性看起来不错,但不确定是否能满足我的需要

编辑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
//////

@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
基本上就是这样

//////

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

@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

您的问题不清楚。有很多不完整的细节。您应该在问题中列出一些输入文件夹和使用此类输入的所需输出。例如,使用此输入:

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!"
)

如果你想得到更清晰的答案,你应该发布更清晰的问题…

你的问题不清楚。有很多不完整的细节。你应该在问题中列出一些输入文件夹和带有此类输入的所需输出。例如,使用此输入:

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!"
)

如果你想得到更清晰的答案,你应该发布更清晰的问题…

为方便起见,选择node.js脚本或php脚本。这不是更简单吗?我不确定它能做到我所想的,但也许有一种比在node中编程更简单的方法。jsIt是一种软件,你将如何向MultiCommand发送命令?我对MultiCommand不太了解nder,如果他们提供任何脚本执行或宏。你是对的。在node.js中,这比在批处理中更容易?在你有专业知识的编程语言中,这更容易,尽管node更简单,更简短,而且为了方便起见,可以选择node.js脚本或php脚本。这不是更容易吗?不确定它能做到我想的,但是也许有比在node中编程更简单的方法。jsIt是一个软件,您将如何向MultiCommand发送命令?我不太了解MultiCommand,以及他们是否提供任何脚本执行或宏。您是对的。在node.js中比在批处理中更容易?在您有专业知识的编程语言中更容易,尽管nodee更简单、简短、甜美谢谢你的回答。因为我不是真正的编程人员,所以我很难看出我的问题中缺少了什么。你说的是对的。我希望每个专辑都在一个特定的艺术家文件夹中。艺术家的名字出现在每个当前文件夹的“-”之前我不确定遗漏了什么,因为你完全回答了我需要的。至少我认为你回答了。你的命令:1.从相册创建一个文件夹,例如:Abdulla rashim-相册12.将所有其他同名文件夹添加到此文件夹3.将新复制的文件夹的名称重命名为相册名称?谢谢,在这种情况下,我邀请选择绿色复选标记并向上投票!)我尝试了该命令,它创建了文件夹,但没有将文件移动到其中。如何将文件移动到创建的文件夹中,并在移动时重命名文件夹?问题是一个细节:您说过艺术家的名字出现在每个当前文件夹的“-”之前,但这部分的最后一个字符是空格,文件夹名称不能以空格结尾。这一点同样适用于第二部分的第一个字符。我根据这个新规范相应地修改了代码,但是您必须知道,如果任何文件夹的“-”分隔符大于或小于一个空格,那么这个程序将失败……哇,非常感谢。你很难做到吗?学习要花时间吗?太神奇了。再次感谢汉克斯的回答。因为我不是真正的编程,所以我很难看到我的问题中遗漏了什么。你说的是正确的想法。我希望每张专辑都在一个特定的艺术家文件夹中。艺术家的名字出现在每个当前文件夹的“-”之前,我不确定缺少什么,因为你回答了我所需要的。至少我认为你做到了。你的命令是:1。从相册中创建文件夹,例如:Abdulla rashim-相册1 2。将其他同名文件夹添加到此文件夹3。是否仅将新复制文件夹的名称重命名为相册名称?谢谢,在这种情况下,我邀请您接受我的答案,选择绿色复选标记,并投票表决<代码>;)我尝试了这个命令,它创建了文件夹,但没有将文件移动到其中。如何将文件移动到创建的文件夹中,并在移动时重命名文件夹?T