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 Dateiname umbenennen - kürzen

Mitglied: D.T.Soko

D.T.Soko (Level 1) - Jetzt verbinden

03.01.2006, aktualisiert 23.02.2006, 12393 Aufrufe, 11 Kommentare

Dateinamen per Batch umbenennen bzw. an bestimmten Stellen kürzen.
[Edit] Closed - aus meiner Sicht beantwortet. Biber [/Edit]

Hallo zusammen,

ich habe ein kleines Problem mit ein paar Dateien die täglich bei mir auf einem Server erstellt werden.

Ja man glaubt es kaum die Dateien Sind zu lang um Sie automatisiert weiter zu verarbeiten.

Lösungsansatz:
Ich habe mir gedacht die verschiedenen Datei als Variable zu speichern - zu kürzen und mit "ren" um zu benennen.

Vorher:
G060102105.gut, "G" halt ein G | "060102" Datum | "105" TermialID | .gut Art der Datei
und irgendwie muss daraus jetzt eine 8.3 konforme Datei werden:
Nachher:
0601020.gut. "060102" Datum | "0" TermialID | .gut Art der Datei

Warum So kompliziert? Weil in dem Verzeichnis übers Wochenende ca 10 Dateien von verschiedenen Terminals mit verschiedenen Arten auflaufen die danach weiterverarbeitet werden.

Die Dateien bekomme ich über:
<font class="code">for /F %a in ('dir c:\g??????105.gut ') do set term0=%a
</font>
als Variable.
Jetzt fehlt mir nur noch das "Kürzen".

Bitte um Hilfe. Wenn jemand einen anderen Lösungsansatz hatt; nur Raus damit.

mfg
D.T.Soko
Mitglied: Biber
03.01.2006 um 16:51 Uhr
Moin D.T.Soko,

das bekommen wir heute noch hin
Eine Rückfrage vorher: Eine "Übersetzungstabelle" für die bisher 3stelligen Terminal-IDs ("105") in irgendwas 1stelliges hast Du bereits?
Oder woher kommt die Übersetzungsregel?
Kannst Du diese Übersetzungstabelle mal (als Skizze) posten bitte?

Gruß Biber
Bitte warten ..
Mitglied: D.T.Soko
04.01.2006 um 09:21 Uhr
Die 105 ist nur ein Teil der TerminalID im eigentlichen werden die ID nur an einer Stelle unterschieden und zwar de "0" der rest ist gleich.

Habe zwar schon versucht dem Programm beizubringen das er mir nur die eine Stelle ausgibt aber das gibt lustige Doppelbuchungen.
Genau das selbe passiert wenn ich das "G" weglass.

Gruß D.T.Soko
Bitte warten ..
Mitglied: Biber
04.01.2006 um 14:32 Uhr
Moin D.T.Soko,

danke für die Rückmeldung, aber jetzt kann ich mir das Szenario besser vorstellen. Hatte es vorher nicht ganz verstanden.

Also, von den vielen denkbaren Möglichkeiten gibt es vier, die ich un Erwägung ziehen würde als Lösungsansatz.

a) plumper, aber übersichtlicher ("lesbarer") Batch mit je einem Rename-Befehl je Zeile
b) wie a), aber Renamerei in einer For..IN..DO..Anweisung
c) Batch mit FOR...IN..DO.. Anweisung, "Übersetzung" des 3stelligen Terminals mit Substring-Funktion
d) Batch mit FOR...IN..DO.. Anweisung, "Übersetzung" des 3stelligen Terminals mit Hilfsdatei

Mein Ausgangsszenario wäre im Beispiel so:
Es existieren die Dateien

G053112175.gut
G060102105.gut
G060103105.gut
G060103115.gut
G060102125.gut

...G*105.gut sind die Dateien von Terminal 0,
...G*175.gut sind die Dateien von Terminal 7,
...G*115.gut sind die Dateien von Terminal 1,
...G*125.gut sind die Dateien von Terminal 2,


Ein Batch der Kategorie a) sähe so aus:
a)
::---snipp RenameGutsA.bat
@echo off & setlocal
Set "GutDir=C:\"
PushD %GutDir%
if exist G??????105.gut ren G??????105.gut G??????0.gut
if exist G??????115.gut ren G??????115.gut G??????1.gut
if exist G??????125.gut ren G??????125.gut G??????2.gut
if exist G??????175.gut ren G??????175.gut G??????7.gut
::andere Termainals entsprechend
Popd
::---snapp RenameGutsA.bat

b1) Variante mit FOR..In..DO; einzeln aufgeführte Terminals
::---snipp RenameGutsB1.bat
@echo off & setlocal
Set "GutDir=C:\"
PushD %GutDir%
FOR %%i in (0,1,2,7) do if exist G??????1%%i5.gut ren G??????1%%i5.gut G??????%%i.gut
Popd
::---snapp RenameGutsB1.bat

b2) Variante mit FOR /L ..In..DO; in Reihe aufgeführte Terminals von 0...9
::---snipp RenameGutsB2.bat
@echo off & setlocal
Set "GutDir=C:\"
PushD %GutDir%
FOR /L %%i in (0,1,9) do if exist G??????1%%i5.gut ren G??????1%%i5.gut G??????%%i.gut
Popd
::---snapp RenameGutsB2.bat

Die Varianten b1) und b2) wären natürlich jeweils nur ein Oneliner vom CMD-Prompt aus:
$cmd$ FOR %i in (0,1,2,7) do if exist G??????1%i5.gut ren G??????1%i5.gut G??????%i.gut
-bzw.-
$cmd$ FOR /L %i in (0,1,9) do if exist G??????1%i5.gut ren G??????1%i5.gut G??????%i.gut

.. aber falls Du die Umbenennerei als Dienst regelmäßig ausführen lässt, wäre ja ein Bätchelchen angebracht.

c) ..mit Substring-Funktion
::---snipp RenameGutsC.bat
@echo off & setlocal
Set "GutDir=C:\"
PushD %GutDir%
For /F %%i in ('dir /b G*.gut') do call :RenameIt %%~ni
goto :eof
:RenameIt Parameter1 ist der Name OHNE Endung
Set "OldName=%1"
Set "NewName=%Oldname:~0,-3%%OldName:~-2,1%"
ren %Oldname%.gut %NewName%.gut
goto :eof
::---snapp RenameGutsC.bat

Variante C ist ungleich schwerer lesbarer (und wartbarer, wenn Du mal Urlaub machst), da diese Substring-Syntax doch für den Laien etwas strange anmutet.
Inhaltlich steht da:
NewName ist Teilstring(Oldname,VonBeginn,BisLängeMinus3) plus (Teilstring, Oldname, zweitletztesZeichen, 1ZeichenLang)

d) Diese Variante wäre sinnvoll bei expliziter statt impliziter Renaming-Regel, wenn Du also eine "Übersetzungstabelle" brauchst, z.B.:

::---Bsp XLate.lst
105=A
115=B
...
195=I
::---Bsp XLate.lst

Diese Mimik habe ich gestern in dem Beitrag von PeMue vorgekaspert hier im Bereich "Batch & Shell".
Bei Bedarf da einen Blick reinwerfen.

HTH Biber
P.S. Grundsätzlich sind alle Bätche mit weniger als 30 Zeilen von mir ungetestet, also ggf. Tippfehler berichtigen!
Bitte warten ..
Mitglied: D.T.Soko
04.01.2006 um 17:08 Uhr
Hallo nochmal Biber,

THX für die Hilfe.
Habe mich für Variante C entschieden da ich für jede Art dann nur einen script-block habe.

Endgültiger Script:

.....
......
For /F %%i in ('dir /b L*.las') do call RenameItlas %%~ni
For /F %%i in ('dir /b g*.gut') do call RenameItgut %%~ni
.....
:RenameItlas
set "OldName=%1"
Set "NewName=%OldName:~1,-3%%OldName:~-2,1%"
ren %OldName%.las %NewName%.las
goto :eof

......
(jetzt kommt das ganze nur noch mit den anderen Dateiendung.)

Fertig und funktioniert.

Hab nur bei Set "NewName=%OldName:~1 das "~1" geändert um das "G" verschwinden zu lassen.

Danke dir recht herzlich für deine schnelle Hilfe.
Und schöne grüße aus dem verschneiten Allgäu
mfg
D.T.Soko
Bitte warten ..
Mitglied: Biber
04.01.2006 um 18:09 Uhr
Fein, D.T.Soko,

dann hätte ich noch folgenden (kosmetischen) Verbesserungsvorschlag:
(mit Übergabe der Datei-Extension als 2. Parameter)
For /F %%i in ('dir /b L*.las G*.gut') do call RenameItAll %%~ni %%~xi
.....
:RenameItAll
set "OldName=%1"
Set "NewName=%OldName:~1,-3%%OldName:~-2,1%"
ren %OldName%%2 %NewName%%2
goto :eof

Grüße zurück aus dem schmuddelwettrigen Bremen
Biber
Bitte warten ..
Mitglied: 20638
04.01.2006 um 18:26 Uhr
Hast grad meine Verbeugug verdient.

Gibt es schon ein Tut über Batch Programmierung.
Interresiere mich voll für das Thema.

MfG
JT
Bitte warten ..
Mitglied: Biber
04.01.2006 um 18:39 Uhr
@20638
Klar, im Bereich "Batch und Shell" gibt es genauso Tutorials wie in den anderen Bereichen auch.
Einige der neueren sind allerdings etwas langatmig, munkelt man/frau.

@D.T.Soko
Ich gehe mal von Deinem Einverständnis aus und setze den Beitrag auf "Closed".

Grüße Biber
Bitte warten ..
Mitglied: 20638
04.01.2006 um 18:48 Uhr
@Biber
wieder einmal thx.
Werde wieder Wissen saugen.....

MfG
JT
Bitte warten ..
Mitglied: Biber
04.01.2006 um 19:19 Uhr
-OT gelöscht-
Bitte warten ..
Mitglied: 20638
04.01.2006 um 19:21 Uhr
-OT gelöscht- Biber
Bitte warten ..
Mitglied: D.T.Soko
23.02.2006 um 14:52 Uhr
Statusänderung
mfg
Doc.T.Soko
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

Dateien in Abhängigkeit des Dateinamens auf eine bestimmte Zeichenzahl kürzen und verschieben

gelöst Frage von Booster07Batch & Shell11 Kommentare

Hallo zusammen, ich habe zwei Probleme, bei denen ich auf Eure kompotente Hilfe hoffe: Problem 1: Ich habe sehr ...

Batch & Shell

Batch - Dateinamen auslesen, umbenennen + dreistellige Zahl vor bisherigen Dateinamen setzen.

Frage von citroendsvierBatch & Shell4 Kommentare

Hallo und guten Morgen, ich möchte für drei Ordner (2011, 2013, 2014) eine Batch schreiben, die die darin enthaltenen ...

Batch & Shell

Dateiname entsprechend einem um x-Ebenen übergeordeten Ordnernamen umbenennen

gelöst Frage von Booster07Batch & Shell3 Kommentare

Hallo Zusammen, ich bin Batch-Amateur und komme bei folgendem Problem nicht weiter. Ich will sehr viele Dateien, die in ...

Batch & Shell

Umbenennen entpackter Dateien nach Dateinamen der rar- zip-Datei

Frage von windows-nutzerBatch & Shell

Hallo zusammen, ich habe nachfolgenden Code, der mir verpackte Dateien entpackt. Da ich jedoch mehrere Dateien habe, die ich ...

Neue Wissensbeiträge
Humor (lol)
(Part num your Hacked phone. +XX XXXXXX5200)
Erfahrungsbericht von Henere vor 16 StundenHumor (lol)1 Kommentar

Mein Handy hat aber ne ganz andere Endnummer. Muss ich mir jetzt Sorgen machen ? :-) Vielleicht betrifft es ...

Exchange Server

Letztes Update für Exchange 2016 CU9 war in gewisser Weise destruktiv

Erfahrungsbericht von DerWoWusste vor 17 StundenExchange Server6 Kommentare

Kurzer Erfahrungsbericht zu Exchange2016-KB4340731-x64 Der Exchangeserver hat wie gewöhnlich versucht, es in der Nacht automatisch zu installieren - abgesehen ...

Erkennung und -Abwehr

Neue Sicherheitslücke Foreshadow (L1TF) gefährdet fast alle Intel-Prozessoren

Information von Frank vor 1 TagErkennung und -Abwehr3 Kommentare

Eine neue Sicherheitslücke, genannt Foreshadow (alias L1TF) wurde auf der Usenix Security 18 von einem Team internationaler Experten veröffentlicht. ...

Vmware
VMware Updates gegen L1 Lücke
Information von sabines vor 2 TagenVmware

Für die Vmware Produkte vCenter Server, ESXi, Workstation und Fusion stehe Updates bereit um die L1 Lücke zu schließen. ...

Heiß diskutierte Inhalte
Windows Server
Domäne einsilbig mit nur einem Namen benannt - sowie AD und MX auf einer VM Kardinalsfehler?
Frage von TomTestWindows Server48 Kommentare

Hallo liebe Freunde gepflegter Probleme, seit kurzem soll ich eine Domäne verwalten die zuvor von einem IT-Dienstleister erstellt und ...

Microsoft
VPN Verbindung kann nicht aufgebaut werden
Frage von AlexderITlerMicrosoft35 Kommentare

Hallo, Ich möchte an einem unserer PCs in unserer Tochterfirma eine VPN zu unserem Netzwerk einrichten. Das schlägt allerdings ...

Windows Server
Windows Server per Web auf Daten zugreifen und verwalten
Frage von matze2090Windows Server16 Kommentare

Hallo, ich würde gerne von außen auf meinem Windows Server zugreifen um auf meine Daten zu verwalten. Meine frage ...

DNS
Gibt es eine Art DNS Proxy?
Frage von icepietDNS16 Kommentare

Hallo Nerds, Ich würde gerne folgendes machen: ts.domain.de:3389 soll auf 1.2.3.4:3389 auflösen ts2.domain.de:3389 soll auf 1.2.3.4:3390 auflösen Gibt es ...