Verschieben Sie Ordner in neue Ordner, indem Sie einen Teil des ursprünglichen Ordnernamens mit Trennzeichen verwenden

Verschieben Sie Ordner in neue Ordner, indem Sie einen Teil des ursprünglichen Ordnernamens mit Trennzeichen verwenden

Ich versuche, Ordner anhand des letzten Teils ihres Namens in neue Ordner zu verschieben. Das Trennzeichen ist ein Unterstrich. Die Anzahl der Unterstriche in den Ordnernamen variiert stark. Ich habe Code gefunden, der den ersten Teil des Namens verwendet, kann aber nicht herausfinden, wie ich ihn dazu bringen kann, den letzten Teil des Namens zu verwenden. In awk wäre das etwa 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"
    )
)

Bearbeitet, um Beispiele hinzuzufügen:

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"

Antwort1

Wäre dies das erwartete Ergebnis:

Bildbeschreibung hier eingeben

@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

Antwort2

So geht es am einfachsten unter Linux oder WSL:

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

Genommen von:https://askubuntu.com/a/538270

verwandte Informationen