3

個々の曲の長いリストがあり、曲だけのフォルダーにはありません。それらをアーティストのフォルダーに移動したいと思います。曲は次の形式です

アーティスト - 曲名.flac

それらをリストに保存してエコーすることはできますが、アーティストと曲名を2つの変数に分割すると、わかりません。

誰かが分割を手伝ってくれませんか(または、スクリプトの残りの部分でも必要な場合)

これは私がこれまでに持っているものです:

@echo off
setlocal enabledelayedexpansion
set N=0
for %%i in (*) do (
    set Files[!N!]=%%~ni
    set /a N+=1

)
for /l %%x in (1,1,%N%) do echo.!Files[%%x]!

pause
4

3 に答える 3

3
set SOURCE=c:\temp\test
for /f "delims=-. tokens=1,2" %%i in ('dir /b "%SOURCE%\*.flac"') do echo Artist : %%i  Song : %%j

完全なスクリプトの更新(パスにスペースと特殊文字が含まれているかどうかを確認する必要があります):

@echo off
setlocal enabledelayedexpansion
set SOURCE=c:\temp\test
set DESTINATION=c:\temp\test

for /f "tokens=*" %%i in ('dir /b "%SOURCE%\*.flac"') do call :OrderThatMess "%%i"

:OrderThatMess

set NAME=%1
for /f "tokens=1,2 delims=-. " %%j in (%1) do (
    set ARTIST=%%j
    set TITLE=%%k
    if not exist "%DESTINATION%\%ARTIST%" (md "%DESTINATION%\%ARTIST%" )
    copy %SOURCE%\%NAME% "%DESTINATION%\%ARTIST%\%TITLE%.flac"
    )
于 2013-06-18T19:12:46.437 に答える
3
@echo OFF &SETLOCAL ENABLEDELAYEDEXPANSION
for %%i in (*.flac) do (
    set /a N+=1
    FOR /f "tokens=1,2 delims=- " %%o IN ("%%~ni") DO (
        set "FilesA[!N!]=%%~o"
        set "FilesB[!N!]=%%~p"
    )
)
for /l %%x in (1,1,%N%) do echo(!FilesA[%%x]! !filesB[%%x]!
于 2013-06-18T19:23:37.137 に答える