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

Ordner nach Dateinamen anlegen und in bestimmtes verzeichnis kopieren

Frage Entwicklung Batch & Shell

Mitglied: Spidi-25

Spidi-25 (Level 1) - Jetzt verbinden

09.09.2010, aktualisiert 20:27 Uhr, 4717 Aufrufe, 13 Kommentare

Moin zusammen

ich benötige wieder mal einen Code für folgende Aufgabe,


z.B.:

Steffi_Bild1.jpg
Steffi_Bild2.jpg
Steffi_Bild3.jpg

Ordner auf z.B. K:\Bilder\Steffi\ anlegen und alle 3 Dateien rein kopieren

Karl_Skiurlaub_Bild1.jpg
Karl_Skiurlaub_Bild2.jpg
Karl_Skiurlaub_Bild3.jpg
Karl_Skiurlaub_Bild4.jpg

Ordner auf z.B. K:\Bilder\Karl_Skiurlaub\ anlegen und alle 4 Dateien rein kopieren


Weihnachten_in_Köln.jpg

Ordner auf z.B. K:\Bilder\Weihnachten_in_Köln\ anlegen und Datei rein kopieren


die CMD möchte ich direkt mit einem File Commander aufrufen.



Thx
Mitglied: 60730
09.09.2010 um 12:23 Uhr
Moin,

das ganze möchte ich direkt mit einem Commander aufrufen also ohne die Zeile

Ich könnte dir mit einem Major Tom aushelfen, aber der hätte sehr wahrscheinlich auch eine Zeile mit Set drin.
Commander James Bond weilt ja gerade in der Drehpause

Bitte schreib das mal um, denn u.a das erste Beispiel geht von
  • 123_456 aus und 123 ist das ziel in k:\bilder
das zweite von

  • 123_456_789 aus und 123_456 ist das ziel in k:\bilder
last but not Least
  • 123_456_789_0ab aus und 123_456_789 ist das ziel in k:\bilder

Also immer bis zum letzten _

Gruß

edit
Ausführen möchte ich es mit dem File Commander
sorry -einer von uns beiden kann sich nicht richtig ausdrücken...
/edit
Bitte warten ..
Mitglied: Spidi-25
09.09.2010 um 12:33 Uhr
Ausführen möchte ich es mit dem File Commander

ich muss noch was korregieren

es gibt manchmal nur ein Foto und dann hat es folgende Dateinamen:

Urlaub_Griechenland.jpg ohne Bild am ende

dann soll ein Ordner Urlaub_Griechenland angelegt werden

Thx
Bitte warten ..
Mitglied: Spidi-25
09.09.2010 um 20:57 Uhr
mit folgendem code wird werden die Daten auf K:\Bilder abgelegt, aber es wird für jede Datei ein Ordner erstellt und das ist falsch.

01.
@echo off & setlocal 
02.
set "Ziel=K:\Bilder\" 
03.
  
04.
for %%t in (jpg) do (  
05.
    for /f %%i in ('dir /b /on /a-d *.%%t') do (  
06.
 
07.
        for /f "tokens=1-6 delims= " %%a in ("%%~ni") do (   
08.
            md "%Ziel%%%a" 2>nul  
09.
            copy "%%i" "%Ziel%%%a">nul  
10.
            
11.
        )  
12.
    )  
13.
)

thx
Bitte warten ..
Mitglied: 60730
09.09.2010 um 22:23 Uhr
moin,


Ich tippte dich auf ein paar ungereimtheiten

  • was ist denn nun dein File Commander?
  • Nimm einfach mal den Code auseinander und werf vor allem @echo off raus.
  • Wenn du Dateien mit einem _ und welche mit zwei _ _ und drei ___ usw. hast mußt du diese auch getrennt verhackstückeln.

Die Tokens 1-6 sind doch von wem wofür auch immer willkürlich gesetzt und das mußt du anpassen.

for /f %%i in ('dir /b /on /a-d *.%%t') do (

Demo 4n Promt
echo hallo>ha_llo.txt
echo hallo>ha_ll_o.txt
echo hallo>h_a_llo.txt
echo hallo>h_a_ll_o.txt

for /f "tokens=1-4 delims=_" %i in ('dir /b /on /a-d *_*_*_*.txt') do echo %i_%j_%k%l
for /f "tokens=1-4 delims=_" %i in ('dir /b /on /a-d *_*_*_*.txt') do md %i_%j_%k\
for /f "tokens=1-4 delims=_" %i in ('dir /b /on /a-d *_*_*_*.txt') do move %i_%j_%k_%l \%i_%j_%k\%l

Ganz ohne echo off

Und das muß natürlich rückwärts aufgenudelt werden, denn

  • dir /b /on /a-d *_*.txt' findet alle
  • dir /b /on /a-d *_*_*.txt' findet nur die nicht, die nur 1_ haben
  • dir /b /on /a-d *_*_*_*.txt' findet nur die nicht, die weniger als 3_ haben

Deshalb der Demo 4n Promt, denn wenn du zuerst die mit drei _ wegmovst, bleiben später nur noch die mit 2 dann einem übrig.


Gruß
Bitte warten ..
Mitglied: Spidi-25
10.09.2010 um 11:07 Uhr
File Commander ist so etwas in der art http://www.efsoftware.com/cw/d.png

mit den Tipps bekomme ich nichts vernünftiges hin, bitte um weitere Hilfe.


Gruß
Bitte warten ..
Mitglied: bastla
10.09.2010 um 18:31 Uhr
Hallo Spidi-25!

Unter der Annahme, dass Du alle Bilder markierst und dann den Batch aufrufst, könnte das etwa so gehen:
01.
@echo off & setlocal 
02.
set "Ziel=K:\Bilder" 
03.
 
04.
:Loop 
05.
if [%1]==[] goto :eof 
06.
echo %~n1|findstr /e "_Bild[0-9]*">nul||( 
07.
    set "Ordner=%~n1" 
08.
    goto :Kopieren 
09.
10.
 
11.
set "Name=%~n1" 
12.
for %%i in (%Name:_=;%) do set "Entfernen=%%i" 
13.
call set "Ordner=%%Name:_%Entfernen%=%%" 
14.
 
15.
:Kopieren 
16.
xcopy %1 "%Ziel%\%Ordner%\" 
17.
 
18.
shift 
19.
goto :Loop
Kurze Erklärung zum Ablauf:
  • Da die Bilder als einzelne Paramter beim Aufruf ankommen, wird nach der Bearbeitung jedes einzelnen Bildes mit "shift" die Parameterliste verschoben, sodass das nächste Bild als %1 zur Verfügung steht - die solange, bis %1 "leer" ist.
  • Wenn der Name ("%~n1") des Bildes nicht auf "Bild" (+ eine oder mehrere Ziffern) endet, kann der Name unmittelbar als Ordnername verwendet werden.
  • Da im anderen Fall die Anzahl der durch "_" getrennten Namensbestandteile nicht bekannt ist, es aber ohnehin nur darum geht, den letzten davon zu elimieren, kann der Name durch das Ersetzen der "_" durch ";" (hier könnte auch ein Leerzeichen verwendet werden) in Einzelteile zerlegt werden - durch die Schleife wird jeder dieser Einzelteile als %Entfernen% gespeichert, was aufgrund des automatischen Überschreibens der vorigen Variableninhaltes dazu führt, dass nach der Schleife die Variable %Entfernen% den letzten Bestandteil, also etwa "Bild1", enthält.
  • Für die Ermittlung des Ordnernamnes wird der in %Entfernen% gespeicherte Teil dann (zusammen mit dem davor befindlichen "_") durch "Nichts" ersetzt.
  • Schließlich kann durch die Verwendung von "xcopy" beim Kopieren automatisch der gewünschte Zielpfad erstellt werden.

Grüße
bastla
Bitte warten ..
Mitglied: Spidi-25
10.09.2010 um 21:13 Uhr
Hallo bastla

aus irgend einem Grund passiert nichts, das Fenster wird für ca. eine 1/4 Sekunde geöffnet und wieder geschlossen, auf K:\Bilder wird auch nichts neues angelegt!

Gruß
Spidi-25
Bitte warten ..
Mitglied: bastla
10.09.2010 um 21:21 Uhr
Hallo Spidi-25!

Dann ändere mal die ersten 5 Zeilen auf
01.
@echo on & setlocal 
02.
set "Ziel=K:\Bilder" 
03.
 
04.
:Loop 
05.
if [%1]==[] pause & goto :eof 
06.
if /i "%~x1" neq ".jpg" shift & goto :Loop
Die (neue) Zeile 6 soll als Absicherung dienen, sodass nur ".jpg"-Dateien verarbeitet werden - wenn das nicht nötig oder erwünscht ist, einfach weglassen ...

Stimmt übrigens die Annahme, dass der Batch für markierte Dateien aufgerufen wird? Wenn nicht, sondern der Batch einen Ordner als Aufrufparameter erhält, dann eher so (und wenn's nicht klappen sollte, ebenfalls mit "echo on" und einer "pause" zwischen Zeile 4 und 5 nachschauen, was da los ist):
01.
@echo off & setlocal 
02.
set "Ziel=K:\Bilder" 
03.
 
04.
for %%i in ("%~1\*.jpg") do call :ProcessFile "%%i" 
05.
goto :eof 
06.
 
07.
:ProcessFile 
08.
echo %~n1|findstr /i /e "_Bild[0-9]*">nul||( 
09.
    set "Ordner=%~n1" 
10.
    goto :Kopieren 
11.
12.
 
13.
set "Name=%~n1" 
14.
for %%i in (%Name:_=;%) do set "Entfernen=%%i" 
15.
call set "Ordner=%%Name:_%Entfernen%=%%" 
16.
 
17.
:Kopieren 
18.
xcopy %1 "%Ziel%\%Ordner%\" 
19.
 
20.
goto :eof
Grüße
bastla
Bitte warten ..
Mitglied: Spidi-25
10.09.2010 um 21:49 Uhr
Hallo bastla

läuft immer noch nicht, es kommt "Drücken Sie eine beliebige Taste" nach dem drücken wird das Fenster geschlossen.

die Dateien werden nicht markiert, es sollen alle im Ordner befindlichen .jpg´s verarbeitet werden,

im Prinzip ungefähr so laufen wie der Code oben, nur das es nicht für jede Datei einen Ordner erstellt!

Gruß
Spidi-25
Bitte warten ..
Mitglied: bastla
10.09.2010 um 21:57 Uhr
Hallo Spidi-25!

Versuchen wir es mit folgender Zeile 4 (für meine letzte Version):
01.
for %%i in (*.jpg) do call :ProcessFile "%%i"
Wenn ich das aus einem Deiner anderen Threads inzwischen richtig herausgelesen habe, wird beim Aufruf kein Parameter übergeben, aber als aktueller Ordner der in Deinem Commander Gewählte verwendet ...

Grüße
bastla
Bitte warten ..
Mitglied: pieh-ejdsch
10.09.2010 um 22:50 Uhr
moin Spidi-25,

vllt tut es dies hier
01.
@echo off 
02.
 
03.
set Woher="D:\Bilder" 
04.
set "Dorthin=K:\Bilder" 
05.
 
06.
::für einen Test - zum nichttesten set "TEST=echo" zu set "TEST=" ändern oder Zeile löschen 
07.
set "TEST=echo" 
08.
 
09.
pushD %woher% 
10.
for %%i in ("*_*.jpg" "ForLastAction_Picture.jpg") do ( 
11.
	set "In=%%~i" 
12.
	set "VZ=" 
13.
	setlocal enabledelayedexpansion 
14.
	set "Out=!In:_=" "!" 
15.
	for /f "delims=*" %%h in ("!OUT!") do (endlocal 
16.
		for %%j in ("%%h") do ( 
17.
			if not "%%~nj%%~xi"=="%%~j" (setlocal enabledelayedexpansion 
18.
				if defined VZ (for /f "delims=*" %%a in ("!VZ!") do endlocal&set "VZ=%%a_%%~j" 
19.
				) else endlocal&set "VZ=%%~j" 
20.
			) else (setlocal enabledelayedexpansion 
21.
				for /f "tokens=1-3 delims=?" %%a in ("!VZ!?!VZOld!?!FileOLd!") do (endlocal 
22.
					if defined VZOld (if "%%a"=="%%b" (set "Old=1" 
23.
							if not exist "%Dorthin%\%%b\" %TEST% md "%Dorthin%\%%b\" && %TEST% move "%%b_%%c" "%Dorthin%\%%b\%%c" 
24.
						) else ( 
25.
							if defined Old (set "Old=" 
26.
								if not exist "%Dorthin%\%%b\" %TEST% md "%Dorthin%\%%b\" && %TEST% move "%%b_%%c" "%Dorthin%\%%b\%%c" 
27.
							) else for %%k in ("%%c") do if not exist "%Dorthin%\%%b_%%~nk\" %TEST% md "%Dorthin%\%%b_%%~nk\" && %TEST% move "%%b_%%~k" "%Dorthin%\%%b_%%~nk\%%~xk"  
28.
					)	) 
29.
					set "VZOLD=%%a" 
30.
					set "FileOld=%%~j" 
31.
)	)	)	)	) 
32.
popD&pause&goto :eof
Gruß Phil
Bitte warten ..
Mitglied: Spidi-25
10.09.2010 um 23:18 Uhr
Hallo bastla

mit der neuen Zeile 4 hat es geklappt, wie immer Perfekt vielen vielen dank!!!!

mit der vorherigen Zeile 4, wurde ein Bild von D:\ (es befand sich nur ein Bild in D:\) obwohl ich mich im Ordner D:\Bilder\Test befand nach K:\Bilder\Ordnernamen=Bildname Kopiert.

Aber es läuft ja jetzt perfekt Thx.

Grüße
Spidi-25
Bitte warten ..
Mitglied: bastla
11.09.2010 um 09:43 Uhr
Hallo Spidi-25!

Schön, dass es doch noch geklappt hat.
mit der vorherigen Zeile 4, wurde ein Bild von D:\ (es befand sich nur ein Bild in D:\) obwohl ich mich im Ordner D:\Bilder\Test befand nach K:\Bilder\Ordnernamen=Bildname Kopiert.
Lässt sich leicht erklären - wenn als %1 nix ankommt wird aus
"%~1\*.jpg"
"\*.jpg"
was schließlich bedeuet: alle ".jpg"-Dateien des Root-Verzichnisses des aktuellen Laufwerkes - daher also "D:\" ...

Grüße
bastla
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Ordner von einem Verzeichnis in ein anderes Verzeichnis kopieren und Datei-Name verändern
gelöst Frage von gudboyBatch & Shell15 Kommentare

Ich habe ein "Verzeichnis A" mit Ordner. Die Ordner haben immer eine "F-Nummer" und einen Titel wie z.B. " ...

Batch & Shell
Ordner anhand von Dateinamen erstellen und Dateien in Ordner kopieren
gelöst Frage von getmovingBatch & Shell3 Kommentare

Hallo, ich brauche eine einfache Batch-Datei für Windows, die alle Dateien in einem Ordner bearbeitet. Es sollen alle jpg-Dateien, ...

Batch & Shell
Batch: alle Ordner mit einem bestimmten Namen kopieren
gelöst Frage von RemsboysBatch & Shell4 Kommentare

Hallo zusammen, ich würde gerne eine Batch-Datei erstellen, mit der ich aus einem Ordner alle Unterverzeichnisse die den Namen ...

C und C++
Dateien in Ordner kopieren anhand vom Teil eines Dateinamen
Frage von onlyforu8373C und C++22 Kommentare

Hallo, ich bin neu hier im Forum und habe auch gleich schon meine erste Frage. Ich suche ein Batch-Skript, ...

Neue Wissensbeiträge
Router & Routing

Lets Encrypt kommt auf die FritzBox

Information von bitcoin vor 2 StundenRouter & Routing

In der neuesten Labor-Version der FB7490 integriert AVM unter anderem einen Let's Encrypt Client für Zugriffe auf das Webinterface ...

Internet

Was nützt HTTPS, wenn es auch von Phishing Web-Seiten genutzt wird

Information von Penny.Cilin vor 3 TagenInternet17 Kommentare

HTTPS richtig einschätzen Ob man eine Webseite via HTTPS aufruft, zeigt ein Schloss neben der Adresse im Webbrowser an. ...

Webbrowser

Bugfix für Firefox Quantum released - Installation erfolgt teilweise nicht automatisch!

Erfahrungsbericht von Volchy vor 4 TagenWebbrowser8 Kommentare

Hallo zusammen, gem. dem Artike von heise online wurde mit VersionFirefox 57.0.1 sicherheitsrelevante Bugs behoben. Entgegen der aktuellen Veröffentlichung ...

Sicherheit

Teamviewer Sessions können gekapert werden - Update tw. verfügbar

Information von sabines vor 4 TagenSicherheit7 Kommentare

In bestimmten Konstellationen können Teamviewer Sessions gekapert werden, wahrscheinlich aber ein recht unwahrscheinliches Szenario. Da der Teamviewer gerne für ...

Heiß diskutierte Inhalte
Vmware
Installation Windows 10 VMware
Frage von Ghost108Vmware17 Kommentare

Hallo zusammen, versuche gerade mit Hilfe des vshpere clients eine virtuelle Windows 10 maschine aufzusetzen. 1. virtuelle Maschine erstellt ...

Exchange Server
SBS 2011 E-Mails können gesendet werden, aber nicht von extern empfangen
Frage von andreas1234Exchange Server14 Kommentare

Hallo Community, ich habe das Problem, dass seit knapp zwei Wochen die E-Mails von meinem SBS 2011 einwandfrei gesendet ...

Voice over IP
Telefonstörung - Ortsrufnummern kein Verbindungsaufbau
Frage von Windows10GegnerVoice over IP10 Kommentare

Hallo, sowohl bei uns als auch beim Opa ist es über VoIP nicht möglich Ortsrufnummern anzurufen. Es kommt nach ...

Windows Server
Server 2012 über Eingabeaufforderung devmgmt.msc geht nicht
gelöst Frage von achim222Windows Server9 Kommentare

Hallo, ich habe hier einen Server 2012 der im Reparaturmodus startet. Es liegt an einem falschen VirtIO Treiber für ...