henradavis
Goto Top

Ordner verschieben anhand des ersten Buchstaben

Hallo liebe Leute,
nach langen suchen konnte ich leider immer noch kein Ergebnis finden, deshalb wende ich mich an Euch.

Ich möchte gerne mehrere Ordner verschieben in andere alphabetische Ordner
z.B.

a1
a2
a3
b1
b5
b7
cba
cag
c2
d1
d2
d3
usw...

das Ergebnis sollte dann so aussehen:
alphabetische Ordner werden erstellt
[A-C]
[D-F]
[G-I]
usw...

anschließend werden die Ordner verschoben also a1 bis c2 sind in den Ordner A-C und d1 bis ... sind in den Orner D-F usw...
Ich hoffe es ist halbwegs verständlich.

Content-Key: 191440

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

Printed on: April 26, 2024 at 10:04 o'clock

Member: Lochkartenstanzer
Lochkartenstanzer Sep 19, 2012 at 06:22:21 (UTC)
Goto Top
Moin,

bash installieren und dann einfach tippen:

mv -iv [a-cA-C]* A-C
mv -iv [d-fD-F]* D-F
...

lks
Member: pieh-ejdsch
pieh-ejdsch Sep 19, 2012 updated at 12:19:18 (UTC)
Goto Top
moin henradavis,

in der CMD-Line könnte es so gehen:
for %a in ("A B C" "D E F" "G H I" "J K L" "M N O" "P Q R" "S T U" "V W  X" "Y Z Z") do @for /f "tokens=1-3" %b in (%a) do @for /d %a in (%b* %c* %d*) do @(ifnot exist "%b-%d" @echo md "%b-%d") &@echo move "%a" "%b-%d"  

Das Z zweimal, sonst gehts nicht auf und der Letzte Ordner hieße "Y-".
@echo zeigt Dir was es täte, wenn Du es entfernst.

Gruß Phil
Member: henradavis
henradavis Sep 19, 2012 updated at 17:47:37 (UTC)
Goto Top
Vielen Dank, das geht schon in die richtige Richtung.
Leider habe ich nur Windows 8 x64, und dort kommt folgende Fehlermeldung:

Der Befehl "ifnot" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.

Nachtrag: "ifnot" einfach auseinander schreiben "if not" dann funktioniert es!
Besteht auch die Möglichkeit dies in ein Batch zu packen oder eventuell komplettes Alphabet zu erstellen und dann dort die Ordner reinschieben?
z.B. aaa1, aa2 adsd --> A
bbb3, baddf, bbbb1 --> B
ccc1, ccad, ccc3 --> C

und ich würde gerne noch Zahlen einbauen also wenn 0-9 vorne steht dann sollten die Ordner dort hin verschoben werden.

Habe es soeben getestet, es funktioniert leider nicht.
Teilweise funktioniert es, teilweise nicht. Die CMD Eingabe schmeißt teilweise die Dateien aus dem Ordner.
Member: pieh-ejdsch
pieh-ejdsch Sep 19, 2012 at 18:44:20 (UTC)
Goto Top
moin,

ifnot ist ein Fehler meinerseits - entstand beim Entfernen der Zeilenumbrüche nach dem kopieren aus der CMD-Line.

Für die Batch müssen alle Prozentzeichen der SchleifenVariablen verdoppelt werden.
Zum erstellen der Ordner ist eine andere Vorgehensweise erforderlich/besser:
@echo off
setlocal disabledelayedexpansiopn
set "Quelle=D:\Daten"  
pushD "%Quelle%"  

for /d %%i in (*) do (
  set "Ordner=%%i"  
  setlocal enabledelayedexpansion
  if not exist "!Ordner:~0,1!" md "!Ordner:~0,1!"  
  @echo move "!Ordner!" "!Ordner:~0,1!"  
  endlocal
)
popD
Hier zeigt Dir @echo auch was es täte, wenn Du es entfernst.

Gruß Phil