구분 기호가 있는 원래 폴더 이름의 일부를 사용하여 폴더를 새 폴더로 이동합니다.

구분 기호가 있는 원래 폴더 이름의 일부를 사용하여 폴더를 새 폴더로 이동합니다.

폴더 이름의 마지막 부분을 기준으로 폴더를 새 폴더로 이동하려고 합니다. 구분 기호는 밑줄입니다. 폴더 이름의 밑줄 수는 매우 다양합니다. 이름의 첫 부분을 사용하는 코드를 찾았지만 이름의 마지막 부분을 사용하도록 만드는 방법을 알 수 없습니다. awk에서는 awk -F'_' {Print $NF}와 같습니다.

@echo off
FOR /D %%G IN (*) DO (
    FOR /F "delims=_" %%H IN ("%%~G") DO (
        MD "%%~H" 2>nul
        MOVE "%%~G" "%%~H"
    )
)

예제를 추가하도록 편집되었습니다.

Folder_01 -> md (if necessary) and move into folder "01"
Folder_02 -> md (if necessary) and move into folder "02"
weird_folder_name_a2d -> md (if necessary) and move into folder "a2d"

답변1

이것이 예상된 결과일까요?

여기에 이미지 설명을 입력하세요

@echo off

if exist "%~1" (IF not exist "%~1\" exit) else (exit)
pushd "%~1"

FOR /D %%a IN (*) DO call :MoveTo "%%~a"
exit


:MoveTo
set "FolderName=%~1"
FOR /F "delims=" %%a IN ("%FolderName:_=\%") DO (
                                                 MD "%%~nxa" 2>nul
                                                 MOVE "%FolderName%" "%%~nxa"
                                                )
goto :EOF

답변2

Linux 또는 WSL을 사용하여 이를 수행하는 가장 쉬운 방법은 다음과 같습니다.

find . -maxdepth 1 -type d -exec perl -e '$a="\Q@ARGV"; $a =~ /([^_]+$)/; `mkdir -p $1 && mv $a $1`' "{}" \;

출처:https://askubuntu.com/a/538270

관련 정보