rotnasenkater
Goto Top

Filetypen in eigene Unterverzeichnisse per Batch

Servus, liebe Gemeinde!

Ich habe das "Problem", daß ich für bestimmte Filetypen Unterverzeichnisse erstellen will und die jeweilige Filetypen dann in die Unterverzeichnisse verschieben will. Zusätzlich sollen bestimmet Files nach dem Mutterverzeichnis benannt werden.

Konkret wäre es z.B. VORHER so:

Verzeichnis\bild 1.bmp
Verzeichnis\text 1.rtf

NACHHER soll es dann so aussehen:

Verzeichnis\bitmaps\bild 1.bmp
Verzeichnis\Textfiles\Verzeichnis.rtf

Bis zum Erstellen der Verezichnisse bin ich ja bereits gekommen (per copy & paste & modifizieren...). Wäre dieser Zweizeiler:

for /f "delims=" %%a IN ('dir /b "*.*"') do md "%%a\Bitmaps"  
for /f "delims=" %%a IN ('dir /b "*.*"') do md "%%a\Textfiles"  

Aber weiter komme ich nicht, da ich von Batchprogrammierung nicht allzu viel Ahnung habe (trotz 34 Jahre Computererfahrung - wie ich zu meiner Schande zugeben muß).

Wäre großartig, wenn mir hier geholfen werden könnte!

Content-ID: 7860728957

Url: https://administrator.de/contentid/7860728957

Ausgedruckt am: 24.11.2024 um 17:11 Uhr

SeaStorm
SeaStorm 15.07.2023 um 23:56:39 Uhr
Goto Top
Hi

powershell ist für sowas viel besser geeignet. Lasst Batch endlich sterben

#Hashtable um Dateiendungen einem Ordner zuzuordnen
$hashtable = @{
"*.rtf" = "Textfiles"  
"*.txt" = "Textfiles"  
"*.bmp" = "Bitmaps"  
"*.jpg" = "Images"  
"*.gif" = "Images";  
}

#Pfad in dem gesucht wird
$source = "C:\temp"  



#Schleife um die Hashtable zu durchlaufen
foreach ($key in $hashtable.GetEnumerator()) {
#Zielordner zusammenbauen
$destination = "$($source)\$($key.value)"  
#Source Dateiendungen im Sourceordner zusammenbauen
$sourcefiles="$($source)\$($key.key)"  
#Prüfen ob Ordner bereits existiert
If(!(Test-Path -PathType container $destination))
{
    #Falls nicht, Ordner anlegen
    New-Item -ItemType Directory -Path $destination
}
#Und die Dateien dann verschieben
Move-Item -Path $sourcefiles -Destination $destination 
}
ReddHerring
ReddHerring 16.07.2023 um 07:58:22 Uhr
Goto Top
Falls du in das Thema mit den Dateitypen etwas tiefer einsteigen willst @Rotnasenkater, oder falls hier irgendjemand mal mit der Suche drauf stößt ;) - dann gerne mal unter dem Begriff "Magic Numbers" suchen. Oder hier der Link zu Wiki:

https://en.wikipedia.org/wiki/List_of_file_signatures

Worum es da geht, falls du da noch nicht so tief drin bist: Was passiert mi einer *.exe Datei wenn sie in *.jpg umbenannt wird? Sie wird als jpg-File erkannt obwohl der eigentliche Inhalt ja eine exe ist und man dann zwar die Fileendings korrekt gefiltert hätte, jedoch aber nicht das eigentliche File identifzieren konnte.

Bei den "Magic Numbers" geht es darum bei Files die Signatur des Headers auszulesen. Hier erkennt man anhand gewisser Zeichenfolgen, was für ein Dateityp das wirklich ist und kann danach filtern, sortieren oder unerwünschte Formate rausschmeisen.