Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Batch Sortierer und Kopfchaos

Mitglied: evotoy

evotoy (Level 1) - Jetzt verbinden

13.12.2009, aktualisiert 18.10.2012, 3366 Aufrufe, 6 Kommentare

Hi, ich bin neu hier ... also hallo an alle!! Ich hab hier schon häufig nützliche Beiträge gefunden und ich geh mal stark davon aus, dass es dieses Mal auch was wird ... ;)

Ich versuch mich grad mit meiner ersten Batch .. aber ich komm leider mit dem Syntax irgendwie nicht klar bzw. versteh ich den nur zur Hälfte - hab schon versucht hier dieverse Codezeilen zusammenzufriemeln - das wird allerdings langsam zum Drama

Das Script soll folgendes unabhängig vom absoluten Pfad machen:

- lese dateinamen (zb: 20091010-steuererklärung.txt)
- trenne die ersten neun zeichen ab (20091010-)
- trenne die letzten vier zeichen ab (.txt) - (falls nötig - Dateiendungen sollen ignoriert werden)
- checke, ob es bereits einen ordner mit dem restlichen Dateinamen gibt
ja - kopiere datei in den ordner
nein - erstelle ordner mit dem namen
- kopiere datei in den ordner
- gehe zur nächsten datei

mache das bis alle Dateien im Ordner abgearbeitet sind.

also ich denke, dass das nur ein paar Zeilen Code sind - ich bin auch schon bei @echo off - kleiner Scherz. Wie gesagt sitz ich hier schon ne Weile und versuch aus diversen Codes was zusammenzubauen - aber dann steht da immer so Zeug wie %%~dpni wo ich nicht weiss, wo das herkommt oder was das machen soll???

Ich würde mich rießig über ein funktionierendes Grundgerüst freuen ...

ich probier schon mal weiter ...

DANKE!!
Mitglied: Biber
13.12.2009 um 14:51 Uhr
Moin evotoy,

da ich dir den Spaß am Selber-Herausfinden nicht vorzeitig nehmen will, erstmal nur ein paar hoffentlich zielführende Tipps.
Zitat von evotoy:
- lese dateinamen (zb: 20091010-steuererklärung.txt)
So etwas kann immer der DIR /B-Befehl - probier es am CMD-Prompt.
- trenne die ersten neun zeichen ab (20091010-)
So etwas kann immer dir FOR /F-Anweisung sehr git - auch mit der Ausgabe des DIR/B-Befehls.
Wobei dann zu überlegen wäre, ob du "immer" die ersten 9 Zeichen abtrennen kannst (Namenssystematik ist wirklich stringent eingehalten) oder das nur machen willst mit allen Dateien der Wildcard "20*-*.*"
- trenne die letzten vier zeichen ab (.txt) - (falls nötig - Dateiendungen sollen ignoriert werden)
...oder vielleicht lieber die Extension %~xi einer Datei %i? Bzw nur den Namen %~ni statt Name+eXtension %~nxi.
- checke, ob es bereits einen ordner mit dem restlichen Dateinamen gibt
... evtl mit IF EXIST... ?
- aber dann steht da immer so Zeug wie %%~dpni wo ich
nicht weiss, wo das herkommt oder was das machen soll???
Das steht z.B bei SET /? und FOR /? beschrieben..

Ich würde mich rießig über ein funktionierendes Grundgerüst freuen ...
Noch rießiger aber, wenn du selbst austüftelst...
ich probier schon mal weiter ...
Und wenn es klemmt, sind wir da..

Grüße
Biber
Bitte warten ..
Mitglied: evotoy
13.12.2009, aktualisiert 18.10.2012
Ok ... ich seh schon ... ihr wollt mich leiden sehen ... alles klar - ich sitz ja noch - hab schon sehr lange keine codezeile mehr geschrieben ...

Danke erstmal biber ...

ok den dir befehl kenn ich noch ... muss ich das dann aber in ne datei umleiten und dann dort wieder auslesen?

Ich war schonmal soweit:

den Code hab ich in von hier: https://www.administrator.de/forum/dateien-sortieren-und-verschieben-per ...

01. @echo off & setlocal
02. for /d %%v in ("D:\Startverzeichnis\*.*") do (
03. pushd "%%v"
04. for %%i in (*.*) do (
05. if not exist "%%~ni\" md "%%~ni\" && echo Ordner erstellt: %%~dpni
06. move "%%i" "%%~ni\"
07. )
08. popd
09. )

das macht schonmal so was ähnliches. Mit Anpassung verschiebt das alle Dateien in einem Verzeichnis in einen neu erstellten Ordner mit dem Dateinamen. Jetzt hab ich mir gedacht, wenn ich da jetzt noch mit Token und Delims was mache müsste das ja schon fast reichen, oder??
Bitte warten ..
Mitglied: evotoy
13.12.2009 um 16:19 Uhr
HI ... also ich komm aus dem Lachen nicht mehr raus ... ich hab grad was zusammengewurschtelt - aber das echt krasse ist: es geht!!!!!! ?????????

Bitte fallt nicht vom Stuhl, wenn ihr den Code seht - ich mache sehr gerne professionelle Änderungen und ich versteh ja ledier nicht ganz, was ich da zusammengebaut hab - würde es aber echt gerne verstehen und besser machen

01.
@echo off 
02.
 
03.
dir/b>>Dateien.txt 
04.
 
05.
for /F "tokens=2 delims=-" %%i in (Dateien.txt) do (  
06.
    if not exist "%%~ni" md "%%~ni" 
07.
    move "*%%~ni.*" "%%~ni\" 
08.
    echo zu erstellen: %%~dpni 
09.
    echo Name = %%~ni 
10.
)
ok - ein erklärungsversuch:

ich geb mit dir die unsortierte Liste in eine Datei aus da steht dann folgendes drin:

20080512-auto.txt
20090103-haushalt.txt
20090112-haushalt.txt
20090112-steuer.txt
20090113-steuer.txt
20090116-haushalt.txt
20090116-steuer.txt
20090123-haushalt.txt
20090512-auto.txt
20090518-auto.txt
20090712-auto.txt
Dateien.txt
Sortieren.bat

so da spalte ich jetzt mit Hilfe einer ForSchleife mit token=2 und delims=- den Dateinamen ab -was ich da aber gar nicht verstehe ist wieso dann %%~ni überhaupt funktioniert????? und dann damit auch das md - ich mein ich setzte ja keine Variable und nichts??? naja und dann dacht ich mir wenn das schon geht ... dann könnte das verschieben ja auch so funktionieren - also hab ich mit Wildcards den Namen wieder zusammengesetzt *%%~ni.* und in den erstellten Ordner verschoben ...

Kann mir jemand sagen, warum dasfunktioniert? woher weiß %%~ni was aus der Textdatei ausgelesen wurde? Für %%~ni ist das was in der txt steht doch nur noch ein string, oder?

Kurios???


[Edit Biber] Codetags nachgetragen [/Edit]
Bitte warten ..
Mitglied: miniversum
13.12.2009 um 19:37 Uhr
Also so hät ichs auch gemacht.. naaj so ähnlich.
Hier mal deine Variante mit ein paar änderungen die ich gemacht hätte. das erklärt dann auch deine Frage:
01.
@echo off 
02.
for /F "tokens=2 delims=-" %%i in ('dir/b') do ( 
03.
md "%%~ni" 2>NUL 
04.
move "*%%~ni.*" "%%~ni\" 
05.
echo zu erstellen: %%~dpni 
06.
echo Name = %%~ni 
07.
)
Den Umweg über die Dateien.txt kannst du dir sparen und dem Befehl direkt in die For schreiben (siehe Zeile 2)
Die if exist beim md kannst du weglassen wenn du weißt das md auf ein bereits existierendes Verzeichnis immer auch funktioniert. Eine entstehende fehlermeldung wird dann mit 2>NUL nicht mehr angezeigt. Das es deshalb auch funktioniert wenn nichts in der Variabeln steht liegt daran das du in dem fall ein bereits existierendes Verzeichnis anlegen willst.
Bitte warten ..
Mitglied: evotoy
14.12.2009 um 22:00 Uhr
Hi,

hm ok ... verstehe - jetzt macht das schon eher sinn ... vielen dank!!
Bitte warten ..
Mitglied: evotoy
14.12.2009 um 22:27 Uhr
so ... ich hab nochmal ein bisschen gefeilt ... ich hab das exist jetzt doch drin behalten damit die Textausgabe nur bei wirklich neu erstellten Ordnern kommt. Hier ist die quasi fertige Batch - falls jemand was ähnliches vor hat ...
01.
@echo off 
02.
echo ______________///  Sortiertool \\\________________ 
03.
for /F "tokens=2 delims=-" %%i in ('dir/b') do (  
04.
    if exist "%%~ni" ( 
05.
        move "*%%~ni.*" "%%~ni\" 2>NUL 
06.
    ) ELSE ( 
07.
        echo Erstelle Ordner   : %%~dpni    
08.
        md "%%~ni" 2>NUL 
09.
        move "*%%~ni.*" "%%~ni\" 2>NUL 
10.
11.
12.
pause  
Danke nochmal für die Hilfe!!!!


[Edit Biber] Codetags nachgetragen [/Edit]
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
(Batch) Datum Sortier-Mechanismus
gelöst Frage von clragonBatch & Shell19 Kommentare

Hallo zusammen. Ich bin schon etwas länger am Batch schreiben, und war schon oft uneingeloggt hier, und jetzt hab ...

Batch & Shell

Eine Batch zum Sortieren verschiedener Dateien in Ordner

gelöst Frage von JaglagBatch & Shell16 Kommentare

Hallo, da ich leider mit Batch und shell nicht so erfahren bin hoffe das ein findiger User hier weiterhelfen ...

Batch & Shell

Batch PDFs anhand des Namens in Unterordner sortieren

gelöst Frage von l-Ne0nBatch & Shell5 Kommentare

Hey, war sonst immer stiller Mitleser, aber komme jetzt grad auch mit den vorhandenen Themen nicht weiter Aufgabe: In ...

Batch & Shell

Batch: Dateien automatisch in verschiedene Ordner sortieren

gelöst Frage von XanderoBatch & Shell11 Kommentare

Hallo Community, ich möchte folgende Aufgabe per Batch lösen: In einem Ordner werden täglich mehrere csv-Dateien angelegt, die nach ...

Neue Wissensbeiträge
Sicherheit

Ungepatchte Remote Code Execution-Lücke in LG NAS

Information von kgborn vor 1 StundeSicherheit

Nutzt wer LG NAS-Einheiten? In den NAS-Einheiten der LG Network Storage-Einheiten gibt es eine sehr unschöne Schwachstelle, die einen ...

Windows Update

Neue Version KB4099950 NIC Einstellungen gehen verloren

Information von sabines vor 6 StundenWindows Update2 Kommentare

Es ist eine neue Version des KB4099950 verfügbar, die das Problem mit den verlorenen Netzwerkeinstellungen lösen soll. Das Datum ...

Microsoft Office

MS Office 2019 ohne OneNote - OneNote App speichert nur in Cloud

Information von Deepsys vor 17 StundenMicrosoft Office2 Kommentare

Microsoft zeigt deutlich wohin alles bei Ihnen geht, OneNote 2019 wird es nicht mehr geben, und die Windows 10 ...

Humor (lol)

Warum man sein Gast-WLAN nicht beliebig nennen sollte

Erfahrungsbericht von Henere vor 1 TagHumor (lol)5 Kommentare

Servus, mal was aus dem Alltag. Zu Hause. Eigentlich wollte ich nur einen weiteren WLAN-AP ins Netz bringen, damit ...

Heiß diskutierte Inhalte
Windows Netzwerk
LAN nur 10MB pro s trotz gb lan
Frage von tsunamiWindows Netzwerk21 Kommentare

Hallo zusammen, ich brauche mal wieder einen Anstoß in die richtige Richtung. Ich habe einen Windows 10 pc mit ...

Festplatten, SSD, Raid
Server SSD: NVMe PCIe 3.0 RAID?
Frage von bouneeFestplatten, SSD, Raid15 Kommentare

Hallo liebe Admins, mir stellt sich gerade die Frage, ob ein neuer Server mit SSD NVMe PCIe 3.0 Sinn ...

Windows 10
Windows 10 Startmenü-Einstellungen Systemweit festlegen
Frage von flotautWindows 1013 Kommentare

Guten Morgen liebe Admins, wir möchten bei uns am Lehrstuhl demnächst auf Windows 10 umsteigen. Wir installieren unsere PC's ...

Netzwerke
Gateway in Switches, Druckern ect eintragen oder nicht
Frage von JodelknutNetzwerke12 Kommentare

Hi, bisher habe ich immer das Gateway überall wo es verlangt oder eintragbar war auch eingetragen. Mein neuer Kollege ...