cgboard - classic games
[Suche] Ordner nach Dateinamen erstellen und automatisch verschieben - Druckversion

+- cgboard - classic games (https://cgboard.raysworld.ch)
+-- Forum: Hard- und Software (https://cgboard.raysworld.ch/forumdisplay.php?fid=6)
+--- Forum: Software, Coding und GFX (https://cgboard.raysworld.ch/forumdisplay.php?fid=19)
+--- Thema: [Suche] Ordner nach Dateinamen erstellen und automatisch verschieben (/showthread.php?tid=27562)



Ordner nach Dateinamen erstellen und automatisch verschieben - kolwe-x - 19.11.2022

Hi,
wie der Titel schon sagt, suche ich nach einem Programm (oder evtl. geht das ja auch mit einer Batch), dass mir Ordner erstellt, mit dem Dateinamen und die Datei dann auch in diesen erstellten Ordner verschiebt.

Also so z.B.
Dateiname: Blubbakrawumm.wav
Ordnername: Blubbakrawumm (dieser Ordner wird erstellt, da die .wav ja so heißt)
und dann wird die .wav automatisch in diesen erstellten Ordner verschoben.

Vielen Dank für jede Hilfe. Yeah


RE: Ordner nach Dateinamen erstellen und automatisch verschieben - tomwatayan - 19.11.2022

Da kann ich ja eine kürzere Variante aus dem Thread von Pobeller hier reinkopieren:

Code:
@echo off
chcp 1252
setlocal enableextensions disabledelayedexpansion
FOR /f "tokens=*" %%G IN ('dir /b') DO (call :subroutine "%%G")
echo Alles erledigt
exit /b 0

:subroutine
For %%A in (%1) do (
    Set Folder=%%~dpA
    Set FullName=%%~nxA
    Set Name=%%~nA
    Set Extension=%%~xA
)
if exist "%FullName%\*" (
    echo Überspringe Ordner "%FullName%"
    exit /b 0
) else (
    if "%Extension%"==".bat" (
        echo Überspringe Batchdatei "%FullName%"
        exit /b 0
    )
)
if not exist "%Name%" (
    mkdir "%Name%"
)
move "%FullName%" "%Name%"
exit /b 0

Die Datei muss als ANSI gespeichert werden.

Das Batch-Skript funktioniert grundsätzlich, hat aber Probleme mit fremden Schriftsätzen (deutsche Umlaute gehen aber). Deshalb würde ich in der heutigen Zeit auch eine Variante in PowerShell empfehlen, kann dafür aber keine Zeilen liefern.


RE: Ordner nach Dateinamen erstellen und automatisch verschieben - donald - 19.11.2022

Hi,

@echo off
setlocal EnableDelayedExpansion

for /F "tokens=*" %%y in ('dir /B /A-D') do (
set z=%%y
if not "!z!"=="#dir.bat" md "!z:~0,-4!"
if not "!z!"=="#dir.bat" move "!Z!" .\"!z:~0,-4!" >nul
)



Diese paar Zeilen machen auch sowas.
Die Batchdatei muss   #dir.bat  heißen und muss in das zu bearbeitende Verzeichnis kopiert werden.


RE: Ordner nach Dateinamen erstellen und automatisch verschieben - Mustrum - 19.11.2022

Unter Linux:
PHP-Code:
#!/bin/sh
for file in *.*
do
    dir="${file%.*}"
    mkdir -"$dir"
    mv "$file" "$dir"
done 
Auch hier gilt: Die ausführbare Shellskript-Datei in das zu bearbeitende Verzeichnis kopieren. Am besten einen prägnanten Namen geben, da diese ebenfalls in ein gleichnamiges Verzeichnis verschoben wird.

Mit Kommentare
PHP-Code:
#!/bin/sh
for file in *.* # Alle Dateien vom Verzeichnis werden eingelesen
do
    dir="${file%.*}# Die Namen für die jeweiligen Verzeichnisse werden erfasst
    mkdir -"$dir# Falls sie noch nicht existieren, werden neue Verzeichnisse nach den Dateinamen erstellt
    mv "$file" "$dir# Die Dateien werden in die gleichnamigen Verzeichnisse verschoben
done 



RE: Ordner nach Dateinamen erstellen und automatisch verschieben - kolwe-x - 19.11.2022

@donald: Mein Held ^^. Ich danke dir für deine Hilfe, wie schon in der Vergangenheit Smile

@all: Aber auch euch ein herzliches Dankeschön für die Tipps und Hilfen.


RE: Ordner nach Dateinamen erstellen und automatisch verschieben - donald - 20.11.2022

Hi,



bitte gerne.

Ich hoffe es genügt auch so.


Ist nur eine Schleife mit der DIR Abfrage, nur Dateinamen ohne Verzeichnisse werden "angezeigt".

Alles was nicht wie die Startbatch heißt wird in ein gleichnamiges, erstelltes Verzeichnis verschoben.