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 Dateinamen einlesen, auftrennen, umsortieren ... Datei umbenennen

Mitglied: evotoy

evotoy (Level 1) - Jetzt verbinden

03.04.2010 um 15:18 Uhr, 9596 Aufrufe, 15 Kommentare

Hi,

schöne Ostern erst mal an alle!!!

ich wollt mal wieder ne tolle batch schreiben aber ich scheiter schon im Ansatz!!! Ich hab hier schon alles durchforstet und auch einige Ansätze gefunden - so richtig bin ich damit aber nicht weiter gekommen ....

der Plan: Dateien in einem Ordner umbenennen - und zwar:

Dateiname0001.jpg in 01-Dateiname.jpg
Dateiname0002.jpg in 02-Dateiname.jpg

Dateiname_occlusion0001.jpg in 01-Dateiname-occlusion.jpg
Dateiname_occlusion0002.jpg in 02-Dateiname-occlusion.jpg

ich versuch's glaub ich wieder viel zu kompliziert anzugehen ... mit welchem Befehl geht das denn? geht das in einem Durchgang oder muss man das in mehrerern Schritten machen?
Mitglied: AndreasBrecht
03.04.2010 um 15:35 Uhr
01.
Set fso = CreateObject("Scripting.FilesystenObject")
02.
Set fldr = fso.GetFolder("DerPfad")
03.
For Each fl in fldr.files
04.
  File.name = Mid(fl.Name, Len(fl.Name) - 6, 2) & Left(fl.Name, Len(fl.Name) - 8) & ".jpg"
05.
Next
Das Umbenennen müsste evtl angepasst werden, wenn nich alle jpg und/oder die Nummern nicht immer 4-stellig sind
Bitte warten ..
Mitglied: bastla
03.04.2010 um 16:37 Uhr
Hallo evotoy!

Als Batch ungetestet etwa so (ebenfalls unter der Voraussetzung, dass die letzen 4 Stellen entfernt werden sollen):
01.
@echo off & setlocal
02.
set "Ordner=D:\Testordner"
03.
set "Maske=*.jpg"
04.

05.
pushd "%Ordner%"
06.
for /f "delims=" %%i in ('dir /b %Maske%') do set "Name=%%~ni" & call :ProcessFile "%%i"
07.
popd
08.
goto :eof
09.

10.
:ProcessFile
11.
echo ren %1 "%Name:~-2%%Name:~,-4%%~x1"
Das "echo" in der Zeile 11 steht zum Testen da - so wird der Befehl zum Umbenennen nur angezeigt, aber noch nicht ausgeführt; wenn's vernünftig aussieht, einfach dieses "echo" entfernen ...

Grüße
bastla
Bitte warten ..
Mitglied: bastla
03.04.2010 um 16:43 Uhr
@AndreasBrecht
wenn nich alle jpg
... lässt sich einfach über
... & "." & fso.GetExtensionName(fl.Name)
lösen (und "GetBaseName()" könntest Du dann auch gleich einbauen) ...

Grüße
bastla
Bitte warten ..
Mitglied: evotoy
03.04.2010 um 16:53 Uhr
Hi,

danke!!! ich kuck mir das später gleich mal an ... muss leider erst noch n paar Osteraktivitäten mitmachen ...

ich werd's denk ich erst mal mit der Batch probieren. Das VBS versuch ich dann auch mal wenn die batch geht
Bitte warten ..
Mitglied: AndreasBrecht
03.04.2010 um 17:24 Uhr
Hallo bastla,

Danke für den Tipp. Die beiden Funktionen habe ich schon immer vermisst. Ich hätte nur nicht gedacht, dass die Blinden von Microsoft, die dierekt unter dem Filesystemobjekt einsortiert haben.
Bitte warten ..
Mitglied: evotoy
03.04.2010 um 19:56 Uhr
so ... ich hab grad versucht den schnipsel auseinanderzuklamüsern - deshalb fehlen da auch ein paar Zeilen weiter unten. Ich fürchte ich werde mit den batch codes nicht warm ... ok ... ich versuch mal den code zu übersetzen. Vielleicht kann mir jemand behilflich sein ... ich würde es gerne verstehen!!

set "Maske=00??.*"

das ist klar soweit - quasi ne suchmaske um die dateien zu filtern, die umbenannt werden sollen.

for /f "delims=" %%i in ('dir /b %Maske%') do set "Name=%%~ni" & call :ProcessFile "%%i"

hätt ich so bestimmt erst nach nem Monat zusammen gehabt ... also ne Schleife, die für alle dateien in die variable "name" den dateinamen (%%~ni) schreibt und dann zu der sprungmarke hüpft, richtig?

echo ren %1 "%Name:~-2%%Name:~,-4%%~x1"

so ... hier wird's schwierig für mich ... ich find hier nicht mal den Anfang und das Ende ... ren kann ja nicht so viel. Das heißt, da müsste jetzt " ren 'nameALT' 'nameNEU' " drin stehen. Was macht denn die Zeile genau? Am besten Zeichen für Zeichen ... sorry!! ... könnte der code heißen: setzte den Namen zusammen aus den letzten zwei Zeichen des alten Namens und dem alten Namen ohne die letzten vier zeichen? welche % gehören denn dann wozu? und ist die "%1" der erste Dateiname im ren Befehl? müsste ja ... wieso steht dann da ne 1 und keine Zählvariable %i oder so was ...

danke!!
Bitte warten ..
Mitglied: bastla
03.04.2010 um 20:05 Uhr
Hallo evotoy!
setzte den Namen zusammen aus den letzten zwei Zeichen des alten Namens und dem alten Namen ohne die letzten vier zeichen?
Genau das ist der Plan.

Etwas zerpflückt am Beispiel der Datei "Dateiname0001.jpg":

  • %1 ist der beim Aufruf übergebene komplette Dateiname "Dateiname0001.jpg" (das Unterprogramm ab ":ProcessFile" verhält sich in dieser Hinsicht wie eine weitere Batchdatei und übernimmt daher Aufrufparameter als %1, %2 etc)
  • %Name:~-2% liefert "01" (in der Variablen %Name% steht ja nur "Dateiname0001"),
  • %Name:~,-4% (könnte auch %Name:~0,-4% geschrieben werden) bildet den Teilstring ab Zeichen 1 (bzw beginnend nach dem "Zeichen Nr. 0") bis 4 Zeichen vor dem Ende, also "Dateiname0001", und
  • %~x1 steuert den Typ (samt Punkt davor) bei - demnach ".jpg"

Zur Teilstringbildung siehe set /? ...

Grüße
bastla
Bitte warten ..
Mitglied: evotoy
04.04.2010 um 09:02 Uhr
Hi,

vielen Dank bastla ... also das läuft jetzt und ich habs auch verstanden ... wenn man weiß, was man googeln muss findet man auch ne Menge ;)

ich hab mal versucht, meine letzte batch und die neue zusammen zu schmeißen. In der letzten wurden auch wieder ein Teil vom Namen abgesplittet und dann damit ein Ordner erstellt, in den die Dateien kopiert wurden. Das Script funktioniert so weit - es kommt also genau das raus, was rauskommen soll. Allerdings denke ich , dass das ziemlich unsauber ist. Ich hab auch schon andere Wege probiert. Die haben aber nicht geklappt, so dass ich nun bei der Version gelandet bin ...

1. kann man das in einer Batch elegant lösen? Ist der Ansatz mit den Sprungmarken ok oder ist der schrott?

2. ich hab da ziemlich viele Sprungarken drin - find ich ... ich hab auch gemerkt, dass das script extrem langsam geworden ist im Vergleich zu der Version ohne die Marken.
woher kommt das?

3. Hat das Script einen Fehler, den ich nicht verstehe. Nach dem Druchlaufen des Scripts hängt das Ding in ner Schleife fest wo gar keine ist ... Der Ausdruck "Sortiervorgang beendet" kommt einfach unendlich??????? so dass man das CMD Fenster schließen muss.

Das Ding ist, dass erst die Umbenennung laufen müsste und dann das verschieben - es sollen nämlich beim Verschieben auch Dateien berücksichtigt werden, die bereits die Namenskonvertierung haben. Hier mal der Code dazu

01.
@echo off
02.

03.
echo __________________________________________
04.
echo __________///  Umbenennen \\\_____________
05.
echo __________________________________________
06.

07.
set "MaskRename=*00??.*"
08.

09.
:1
10.
for /f "delims=" %%i in ('dir /b %MaskRename%') do set "Name=%%~ni" & call :2 "%%i"
11.

12.
echo __________________________________________    
13.
echo Umbenennen beendet.   
14.
echo __________________________________________    
15.
goto :3
16.

17.

18.
:2
19.
set name=%name:_occlusion=-occlusion%
20.
ren %1 "%Name:~-2%-%Name:~,-4%%~x1" 
21.
echo %1 "%Name:~-2%-%Name:~,-4%%~x1"
22.
goto :1
23.

24.
:3
25.

26.
echo __________________________________________
27.
echo ___________///  Sortieren \\\_____________
28.
echo __________________________________________
29.

30.
set "MaskSort=??-*.*"
31.

32.
:5
33.
for /F "delims=" %%i in ('dir/b %MaskSort%') do set "Name1=%%~ni" & call :4 "%%i"
34.

35.
goto :6
36.

37.
:4
38.
    if exist "%Name1:~3%" (
39.
        move "%name1%%~x1" "%Name1:~3%\" 2>NUL
40.
	rem goto :5 
41.
    ) ELSE (
42.
        echo __________________________________________    
43.
        echo              Erstelle Ordner   : %Name1:~3%   
44.
        echo __________________________________________        
45.

46.
        md "%Name1:~3%" 2>NUL
47.
        move "%name1%%~x1" "%Name1:~3%\" 2>NUL
48.
	rem goto :5	
49.
    )
50.
goto :5
51.

52.
:6
53.
echo __________________________________________    
54.
echo Sortiervorgang beendet.    
55.
echo __________________________________________  
56.
goto :eof
57.
pause
58.
Danke und vg,
Bitte warten ..
Mitglied: bastla
04.04.2010 um 11:04 Uhr
Hallo evotoy!
ich hab mal versucht, meine letzte batch und die neue zusammen zu scheißen.
Vielleicht wäre "gut zureden" (auch im Hinblick auf den Osterfrieden) die bessere Strategie - Biber (und wenn sich einer mit Batchen auskennt, dann er) meint jedenfalls, ein Batch hätte auch Gefühle ...
Bevor ich mir das Ganze später genauer ansehe, ein Hinweis: Anstelle von "goto :1" und "goto :5" wäre jeweils "goto :eof" zu schreiben.

Grüße
bastla
Bitte warten ..
Mitglied: evotoy
04.04.2010 um 13:35 Uhr
oh ... kleiner tippfehler!! ich korrigier das mal - nich das die Batches eingeschnappt sind
Bitte warten ..
Mitglied: bastla
04.04.2010 um 15:11 Uhr
Hallo evotoy!

Hoffentlich zicken die jetzt nicht doch herum (getestet hab' ich nämlich nicht ):
01.
@echo off & setlocal & goto :Start
02.
:2
03.
set name=%name:_occlusion=-occlusion%
04.
ren %1 "%Name:~-2%-%Name:~,-4%%~x1" 
05.
echo %1 "%Name:~-2%-%Name:~,-4%%~x1"
06.
goto :eof
07.

08.
:4
09.
if not exist "%Name1:~3%" (
10.
    echo __________________________________________    
11.
    echo              Erstelle Ordner   : %Name1:~3%   
12.
    echo __________________________________________        
13.
    md "%Name1:~3%"
14.
)
15.
move "%name1%%~x1" "%Name1:~3%\"
16.
goto :eof
17.

18.

19.
:Start
20.
echo __________________________________________
21.
echo __________///  Umbenennen \\\_____________
22.
echo __________________________________________
23.

24.
set "MaskRename=*00??.*"
25.
for /f "delims=" %%i in ('dir /b %MaskRename%') do set "Name=%%~ni" & call :2 "%%i"
26.

27.
echo __________________________________________    
28.
echo Umbenennen beendet.   
29.
echo __________________________________________    
30.
echo\
31.
echo\
32.
echo __________________________________________
33.
echo ___________///  Sortieren \\\_____________
34.
echo __________________________________________
35.

36.
set "MaskSort=??-*.*"
37.
for /F "delims=" %%i in ('dir/b %MaskSort%') do set "Name1=%%~ni" & call :4 "%%i"
38.

39.
echo __________________________________________    
40.
echo Sortiervorgang beendet.    
41.
echo __________________________________________  
42.
pause
Die beiden Unterprogramm (hätte ich vielleicht nicht mit ":2" und ":4" benannt - sonst heißt es gleich wieder: "Ich bin nur eine Nummer für Dich - nicht mal die Mühe, mir einen Namen zu geben, hast Du Dir gemacht!" ) habe ich etwas prominenter am Anfang des Batches platziert - ob's der Performance hilft, musst Du selber beurteilen ...

Das "Ordner-Erstellen" ist jetzt etwas eingedampft, und die Unterdrückung der Fehler (mit "2>nul") beim Erstellen des Ordners bzw beim Verschieben habe ich entfernt - wenn es hier einen Fehler gibt, solltest Du den auch gemeldet bekommen.

Grüße
bastla
Bitte warten ..
Mitglied: evotoy
04.04.2010 um 21:02 Uhr
Danke!!! Das bau ich noch ein ...
Bitte warten ..
Mitglied: Biber
05.04.2010 um 01:29 Uhr
[OT]
Zitat von evotoy:
oh ... kleiner tippfehler!! ich korrigier das mal - nich das die Batches eingeschnappt sind
Danke, evotoy, fürs Korrigieren..
BTW, ich war ganz fest davon ausgegangen, dass der versehentlich vergessene Buchstabe ein "W" wäre und war total überrascht von einem "M".
Dachte, es ginge ums Zusammenbraten und nicht ums Zusammenwerfen...

Na egal.... alles bleibt gut...
Und ich wäre ja hier im Forum der Letzte, der irgendwelche ungelegten Haarspaltereien über den Zaun bricht...äh...oder so ähnlich.

Grüße
Biber
[/OT]
Bitte warten ..
Mitglied: evotoy
05.04.2010 um 19:45 Uhr
So ... vielen Dank nochmal!!

hier die finale version für alle, die ein ähnliches Problem plagt

01.
@echo off & setlocal & goto :Start
02.

03.
:umbenennen
04.
  set name=%name:_occlusion=-occlusion%
05.
  ren %1 "%Name:~-2%-%Name:~,-4%%~x1" 
06.
  echo %1 "%Name:~-2%-%Name:~,-4%%~x1"
07.
  goto :eof
08.

09.
:sortieren
10.
  if not exist "%Name1:~3%" (
11.
    echo    Erstelle Ordner   : %Name1:~3%   
12.
    md "%Name1:~3%"
13.
  )
14.
  move "%name1%%~x1" "%Name1:~3%\"
15.
  goto :eof
16.

17.
:checken
18.
  if exist "%Name2:~,-10%" (
19.
    echo    gecheckt: %Name2:~,-10%
20.
  ) ELSE (
21.
    echo ...
22.
    echo !!! In der Benennung von "%Name2:~,-10%" und dem Pass ist ein Fehler !!!
23.
    echo ...)
24.
  goto :eof
25.

26.

27.
:Start
28.
  echo __________///  Umbenennen \\\_____________
29.
  echo ==========================================
30.

31.
  set "MaskRename=*00??.*"
32.
  for /f "delims=" %%i in ('dir /b %MaskRename%') do set "Name=%%~ni" & call :umbenennen "%%i"
33.

34.
  echo __________________________________________    
35.
  echo :::::   Umbenennen beendet.   
36.
  echo\
37.
  echo\
38.
  echo ___________///  Sortieren \\\_____________
39.
  echo ==========================================
40.

41.
  set "MaskSort=??-*.*"
42.
  for /F "delims=" %%i in ('dir/b %MaskSort%') do set "Name1=%%~ni" & call :sortieren "%%i"
43.

44.
  echo __________________________________________  
45.
  echo :::::   Sortieren beendet.    
46.
  echo\
47.
  echo\
48.
  echo ___________///  Checken \\\_______________
49.
  echo ==========================================
50.

51.
  set "MaskCheck=*-occlusion"
52.
  for /F "delims=" %%i in ('dir/b %MaskCheck%') do set "name2=%%i" & call :checken "%%i"
53.

54.
  echo __________________________________________  
55.
  echo :::::   Checken beendet.  
56.
 
57.
pause
1. Dateien nach Muster umbenennen
2. Dateien in Ordner mit Teilen vom Dateinamen einsortieren
3. Erstellte Ordnernamen checken (da manuelle Benennung und per Batch generierte)

vg,
Bitte warten ..
Mitglied: bastla
06.04.2010 um 22:47 Uhr
Hallo evotoy!

Danke für den Abschluss des Threads - und Dein Batches sind jetzt, wo Du sie so schön herausgeputzt hast, sicherlich auch wieder versöhnt ...

Grüße
bastla
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
BATCH ini Datei Datei auslesen
gelöst Frage von Juergen42Batch & Shell2 Kommentare

Hallo zusammen, ich möchte eine ini Datei auslesen mit folgenden Aufbau INHALT DER INI ID=30 NAME="test1" PFAD="K:\Kontoauszug\Test1\*.pdf" PFAD_S="K:\Kontoauszug\Test1\Sicherung\" ID=28 ...

Viren und Trojaner
MPSigStub Datei
gelöst Frage von marilene1Viren und Trojaner2 Kommentare

Hallo, ich habe seit einigen Tage eine Datei MPSigStub. Ich kann es leider nicht löschen, da ich keine Berechtigung ...

Batch & Shell
SMIME Datei
gelöst Frage von mero59Batch & Shell4 Kommentare

Hallo liebes Forum, ich hab da mal folgendes Problem: ich überwache mit Powershell und EWS ein Funktionspostfach, d. h. ...

Batch & Shell
Datei suchen
gelöst Frage von IleiesBatch & Shell10 Kommentare

Hallo zusammen, Kann man mit Batch eine Datei im Computer suchen und wenn sie existiert in ihr Verzeichnis wechseln?

Neue Wissensbeiträge
Internet
EU-Urheberrechtsreform: Zusammenfassung
Information von Frank vor 1 TagInternet

Auf golem.de gibt es eine Analyse von Friedhelm Greis, der das Thema EU-Urheberrechtsreform gut und strukturiert zusammenfasst. Zwar haben ...

Microsoft Office

Office365 Schwachstellen bei Sicherheit und Datenschutz

Information von Penny.Cilin vor 2 TagenMicrosoft Office7 Kommentare

Auf Heise+ gibt es einen Artikel bzgl. Office365 Schwachstellen. Das ist noch ein Grund mehr seine Daten nicht in ...

Sicherheit
Schwachstellen in VPN Clients
Tipp von transocean vor 4 TagenSicherheit2 Kommentare

Moin, es gibt Sicherheitslücken bei VPN Clients namhafter Hersteller, wie man hier lesen kann. Gruß Uwe

Sicherheit

Wikileaks-Gründer Julian Assange wurde festgenommen

Information von Frank vor 6 TagenSicherheit3 Kommentare

Wikileaks-Gründer Julian Assange wurde heute in London festgenommen. Die Botschaft Ecuadors, in der er seit sieben Jahren lebte, hat ...

Heiß diskutierte Inhalte
Tipps & Tricks
Verdammt voll erwischt
Frage von AlchimedesTipps & Tricks23 Kommentare

Folgende Mail habe ich auf meinem Freenet Account erhalten: Nun folgendes Problem: 1) Ich besuche Porno Seiten yep hat ...

Drucker und Scanner
Xerox 7328 muss jeden Tag neu installert werden
Frage von PN-SchrauberDrucker und Scanner20 Kommentare

hallo, ich habe in Problem mit einem unserer Drucker. Vorweg, die meisten unserer Netzwerkdrucker laufen über einen Druckserver, dieser ...

HTML
Google maps
Frage von jensgebkenHTML20 Kommentare

Hallo Gemeinschaft, hab mal ne Frage zu Maps - habe es hinbekommen, dass ich einen iframe link erstellen kann ...

Switche und Hubs
PC Verursach Probleme im Netzwerk
gelöst Frage von spoboeSwitche und Hubs16 Kommentare

Hallo zusammen, folgene Situation macht mich inzwischen ratlos: In unserem Betrieb ist ein Rechner über die Hausverkabelung an einem ...