Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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
Kommentar vom Moderator Biber am 21.09.2009 um 22:03:44 Uhr
Na ja, ich verschiebe den Beitrag schon mal von "Windows" nach"Batch & Shell".

Auch wenn da wieder dieses "Dank im voraus" drinsteht.

Grüße Biber

Unterverzeichnisse erstellen - anhand Dateiname

Frage Entwicklung Batch & Shell

Mitglied: sk1412

sk1412 (Level 1) - Jetzt verbinden

21.09.2009, aktualisiert 22.09.2009, 5388 Aufrufe, 10 Kommentare

Hallo Adminexperten
freu mich sehr über einen Tip
Besten Gruss sk1412

Hallo Admin-Experten

möchte gern Folgendes erreichen:
in einem Verzeichnis existieren VIIIIIIEEEELE Dateien (über 10.000 Dateien) mit der "Logik" im Dateinamen
JJJJMMTT_hhmmss_xxx.jpg /.mov /.txt ..usw
Ich bin auf der Suche nach einer Möglichkeit, diese Dateien in Unterordnern zu verschieben.
Diese Unterordner existieren noch nicht.
Meine Idee:
Erstelle ein Unterverzeichnis für jedes Jahr/jeden Monat
und verschiebe alle relevanten Dateien in die richtigen Verzeichnisse

Also:
Erstelle ein Verzeichnis mit dem Namen z.b. 200909
und kopiere alle Dateien, die mit dem Namen 200909 beginnen in dieses Verzeichnis
Das sollte dann für ALLE Dateien durchgeführt werden.
Dasselbs soll natürlich für alle anderen Dateien nach der gleichen Logik durchgeführt werden.

Ich würd mich seeehr über einen Tip freuen, um die Riesenflut an Dateien zu sortieren

Besten Dank im voraus
sk1412
Stefan
Mitglied: bastla
21.09.2009 um 23:35 Uhr
Hallo sk1412!

Etwa so:
01.
@echo off & setlocal 
02.
set "Basis=D:\Das Verzeichnis" 
03.
 
04.
pushd "%Basis%" 
05.
for /f "delims=" %%i in ('dir /b /a-d') do call :ProcessFile "%%i" 
06.
popd 
07.
goto :eof 
08.
 
09.
:ProcessFile 
10.
set "Datei=%~1" 
11.
set "Verz=%Datei:~,6%" 
12.
if not exist "%Verz%" md "%Verz%" 
13.
move "%Datei%" "%Verz%" 
14.
goto :eof
Grüße
bastla
Bitte warten ..
Mitglied: pieh-ejdsch
22.09.2009 um 00:30 Uhr
Hallo sk1412,

[edit]
ups ich war wohl zu lange woanders beschäftigt.
ich sollte mich doch mal auf meine sachen konzentrieren.....
[/edit]

ja "besten Dank im Vorraus" wird nicht gerne gesehen dafür aber ein Danke wenn geholfen worden ist. Und bei Erfolg danach bitte den grünen Haken setzen.

hier ist Dein code mit vorschaufunktion und anschliessender Bestätigungsfrage.
einfach den Ordner wo die ganzen dateien drin sind auf den Batch ziehen oder im CMD Batchname "ordnername"

01.
:: ------- schnipp movefiles2-0,6-namefolder.bat 
02.
@echo off & setlocal 
03.
if exist "%~1." (pushD "%~1") else goto :eof 
04.
set "Vorschau="& set "proceed=" 
05.
echo.Es erfolgt erst eine Vorschau&echo.& ping localhost -n 3 >nul 
06.
:begin 
07.
if not defined Vorschau (set "Vorschau=@echo."&goto :proceed) else set "Vorschau=" 
08.
echo.&echo.&echo. 
09.
set /p proceed=Moechtest Du die Daten wie es angezeigt wurde Verschieben? [J] [N] 
10.
if  /i "%proceed%" neq "j" goto :eof 
11.
:proceed 
12.
for %%i in (*) do (set "name=%%i" 
13.
	setlocal enabledelayedexpansion 
14.
	%Vorschau% 
15.
	if not exist "!name:~0,6!" %Vorschau%mkdir "!name:~0,6!" 
16.
	%Vorschau%move "!name!" "!name:~0,6!\!name!" 
17.
	endlocal 
18.
19.
if not defined proceed goto :begin 
20.
popD 
21.
:: ------- schnapp movefiles2-0,6-namefolder.bat
Gruß Phil
Bitte warten ..
Mitglied: bastla
22.09.2009 um 00:57 Uhr
@PH
Nice - allerdings funktioniert die Zeile 10 (bei mir) in der Form
if /i "%proceed%" neq "j" goto :eof
besser - in Deiner Fassung endet's (bei mir) mit
""j"" ist syntaktisch an dieser Stelle nicht verarbeitbar.
Der Ordnung halber könntest Du auch noch das schließende Anführungszeichen in Zeile 12 setzen.

Grüße
bastla

P.S.: Die Vorschau für 10.000+ Dateien könnte etwas ermüdend wirken ...
Bitte warten ..
Mitglied: pieh-ejdsch
22.09.2009 um 01:44 Uhr
@ bastla

das " in Zeile 12 hab ich übersehen...
hab mal die 2 Zeilen angepasst...

warum allerdings bei Dir %proceed% mit umschliessenden Gänsefüschen kommt frag ich mich....
bei mir ist es ohne
set /p macht doch gar keine Gänsefüschen drumherum
Hhhmmmm...

ich hab mal %windir%\system32 draufgezogen über 2300 Files nichtmal 2 sekunden also so lange dauerts nicht....

Gruß Phil
Bitte warten ..
Mitglied: bastla
22.09.2009 um 08:53 Uhr
@PH
warum allerdings bei Dir %proceed% mit umschliessenden Gänsefüschen kommt frag ich mich....
bei mir ist es ohne
set /p macht doch gar keine Gänsefüschen drumherum
Hhhmmmm..,
Davon, dass der Fehler bei Dir nicht auftritt, war ich ausgegangen (deshalb auch der zweimalige Hinweis "bei mir"), aber es war schon spät und ich hatte keine Lust mehr, der Sache nachzugehen ...

Mit einer Umkehrung von "not" und "/i" klappt's übrigens auch bei mir:
if /i not "%proceed%" == "j" goto :eof
(was in der Hinsicht logisch erscheint, dass "/i" eine Option von "if" und nicht von "not" ist).
ich hab mal %windir%\system32 draufgezogen über 2300 Files nichtmal 2 sekunden also so lange dauerts nicht....
Die Ausgabe nicht, aber das Lesen ...

Grüße
bastla
Bitte warten ..
Mitglied: Biber
22.09.2009 um 09:47 Uhr
<OT>
@pieh-ejdsch
set /p macht doch gar keine Gänsefüschen drumherum
WTF ist "Gänsefüschen"??? So was wie Hochseeangeln für die armen Verwandten auf'm platten Land?

Außerdem werden wohl einige Worte südlich des Mittellandkanals zwar mit "ü" ("Hürsch", "Kürche", "Der Herr ist mein Hürte" , "Füschen" ) gesprochen, aber doch mit "i" geschrieben, oder?

P.S. Wir in Bremen würden auch niemals bei 10000 Dateien eine Vorschaufunktion auch nur andenken..*gg

Grüße
Biber
</OT>
Bitte warten ..
Mitglied: pieh-ejdsch
22.09.2009 um 10:29 Uhr
[OT]
@Biber

ja gut normal schon Gänsefüßchen statt Gänsefüschen....es war schon spät...

ist so der (/mein) sprachgebrauch für Anführungszeichen ....

leider weis ich kein Kürzeres Synonym dafür nur ein Längeres: Federfiehlatschen

[/OT]

ja das mit der Vorschau für 10.000 Files ist schon schlecht - stimmt
für zum Überfliegen der Vorschau bei wenigen 100 Files wäre es zum Prüfen vllt noch OK.

im Grunde hab ich es nur benutzt um bei mir zu testen.

das if /i not
was anderes ist als if not /i
wusste ich nicht vllt nur ein schusselfehler aber nicht mit absicht eingebaut.

Gruß Phil

PS. gibts noch ein Feedback vom Threadstarter?
Bitte warten ..
Mitglied: sk1412
22.09.2009 um 21:03 Uhr
Hey Phil,
erst einmal vielen Dank für die schnelle Antwort !
Ich habe es heute abend erst einmal mit ein paar hundert Dateien probiert -
und es hat wunderbar funktioniert ! Einfach Perfekt - Danke !
Bevor ich mich jetzt an die vielen Dateien "ran mache"

ich bin kein Experte auf der DOS-Ebene ;O - das letzte Mal habe ich mcih vor ca 15 Jahren
mit DOS im "Groben" beschäftigt - und vielen von Deinen Code-Zeilen verstehe ich nicht.
Deswegen bin ich von deinen wenigen Codezeilen einfach nur begeistert
und stelle mir die Frage: Warum teure Programme kaufen, wenn wohl vieles über DOS
einfach und schnell "erledigt" werden kann - auch noch in Windows-Zeiten ;)

aber eine Frage habe ich:
Gibt es auch einen Code, der den ganzen Weg "anders" herum ausführt ?
Also: ALLE Dateien aus ALLEN Unterverzeichnissen in das "Grundverzeichnis" verschieben ?
Oder soll ich dafür besser einen weiteren Thread aufmachen ?

noch eine kleine weitere Frage:
im Code-Fenster kann ich "in den Speicher kopieren" anklicken. Wenn ich dann den
Inhalt im Editor einfüge, werden die Zeilennummern mit eingefügt - die ich dann manuell
löschen musste. .... geht das auch einfacher ?
### hat sich erledigt: muss einfach nur "Quelltext" anklicken - sorry für die vorschnelle Anfrage ###

Besten Gruß
sk1412
Stefan
Bitte warten ..
Mitglied: pieh-ejdsch
23.09.2009 um 00:41 Uhr
hallo sk1412,

bei Dir lief das Ding mit Verschieben?
ich habe ja den Batch nur bis zum J N getestet und immer N gedrückt.
bei mir ging der Batch überhaupt nicht mit verschieben....warum - warscheinlich weil /i und not im IF net geht...KA

aber der Orndung halber einen korregierten Batch:
01.
:: ------- schnipp movefiles2-0,6-namefolder.bat 
02.
@echo on & setlocal 
03.
if exist "%~1" (pushD "%~1") else goto :eof 
04.
set "Vorschau="& set "proceed=" 
05.
echo.Es erfolgt erst eine Vorschau&echo.& ping localhost -n 3 >nul 
06.
:begin 
07.
if not defined Vorschau (set "Vorschau=@echo."&goto :proceed) else set "Vorschau=" 
08.
echo.&echo.&echo. 
09.
set /p proceed=Moechtest Du die Daten wie es angezeigt wurde Verschieben? [J] [N] 
10.
if /i "%proceed%" == "j" (echo. >nul) else goto :eof 
11.
:proceed 
12.
for %%i in (*) do (set "name=%%i" 
13.
	setlocal enabledelayedexpansion 
14.
	%Vorschau% 
15.
	if exist "!name:~0,6!" (%Vorschau%move "!name!" "!name:~0,6!\!name!" 
16.
	) else %Vorschau%mkdir "!name:~0,6!" && %Vorschau%move "!name!" "!name:~0,6!\!name!" 
17.
	endlocal 
18.
19.
if not defined proceed goto :begin 
20.
popD 
21.
pause 
22.
:: ------- schnapp movefiles2-0,6-namefolder.bat
eine Rückieb Batch habe ich auch irgendwo hier auf der Platte rumliegen..ja war die denn .. so hier.
Achtung da Dürfen aber keine Dateiname identisch sein aber bei Deinen Files habne ja alle einen Vorsatz im Dateinamen der den Ordner entspricht. die Ordner werden anschliesend alle wieder gelöscht. wenn Du das net willst dann entferne && rmdir %%i

01.
pushD "%~1" 
02.
for /f "tokens=*" %%i in ('dir /a:d /b') do (move "%%i\*.*"  && rmdir %%i)
so ab inne haia muss morgen meine Kisten & Säcke Packen und Möbel zerlegen.

Gruß Phil
Bitte warten ..
Mitglied: sk1412
23.09.2009 um 22:21 Uhr
Hallo Phil
vielen Dank für Deine Antwort --- und wie ich verstehe, bist Du wohl im "Umzugs-Stress"
Hoffe sehr, dass Du alles gut "über die Wupper bekommst" - Drücke die Daumen !!
Wenn das Packen und Zerlegen so funktioniert wie dein Antwortverhalten im Thread
... dann kann ja nix schief gehen *g

Wenn Du Zeit und Lust hast:
Könnte man den letzten Code (ALLE Dateien aus ALLEN Unterverzeichnissen in das "Grundverzeichnis" verschieben) so verändern, dass - falls es DOCH doppelte Dateien gibt -
diese Dateien automatisch mit einer Ergänzung - z.b. 20090923_... (2).jpg-
also mit der Ergänzung (2) -oder andere- abspeichern kann.
Warum ich das frage ?
Ich musste aufgrund eines massiven Festplattenfehlers die Dateien mit
verschiedenen Recovery-Tools wiederherstellen.
Nur leider funktionieren diese Programme mit sehr unterschiedlicher Qualität.
Bei manchen Dateien sind zwar die Dateigrößen OK, aber die Inhalte lassen sich nicht anzeigen.
Andere Programme erlauben das recovery einzelner Dateien einwandfrei zu.
Welchen Programm welche Dateien einwandfrei wiederherstellen kann, ist auf den ersten Blick
nicht erkennbar. Deshalb habe ich vor, alle Recovery-Verzeichnisse in EIN Verzeichnis zu kopieren
um dann die Prüfung auf "korrekte" Dateien besser nachvollziehen zu können.
Ich hoffe, ich konnte mein Probl. einigermassen deutlich beschreiben
und freue mich auf eine Antwort ))))

Besten Gruß und lass dich vom "Packen und Zerlegen" nicht Mürbe machen ;)
Besten Gruss sk1412 Stefan
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Netzwerkgrundlagen
IPsec - .conf und .secret erstellen aus Gruppe und User (15)

Frage von MaxMLe zum Thema Netzwerkgrundlagen ...

RedHat, CentOS, Fedora
gelöst Erstellen von Desktopverknüpfungen und Anpassung der Taskleiste (2)

Frage von honeybee zum Thema RedHat, CentOS, Fedora ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (32)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...