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
GELÖST

Dateinamen ändern in: Erstellungsdatum Erstellungszeit Name

Frage Entwicklung Batch & Shell

Mitglied: Pemue

Pemue (Level 1) - Jetzt verbinden

01.01.2006, aktualisiert 04.01.2006, 11269 Aufrufe, 12 Kommentare

[Edit] Aus meiner Sicht beantwortet. Biber [/Edit]

Erstmal ein wunderschönes Jahr 2006 an alle.

Hab mich hier schon reichlich umgesehen, komme aber nicht weiter.Will folgendes tun:
eine Reihe von Dateien in einem Verzeichnis soll nach folgenden Schema umbenannt werden:

alter name: audio__172.3800_2006-01-01_16-18-50_to_2006-01-01_16-18-51.wav

neuer name: %Erstellungsdatum(JJJJ.MM.TT)%_%Erstellungszeit(HH:MM:SS)%_%Neuer Name für 172.3800(Kanal-A)%.wav

Eine Übersetzungsliste für Kanal-A, Kanal-B etc liegt in einer set.cmd nach dem Muster bei:

set 172.3800=Kanal-A
set 85.6750=Kanal-B
etc.
(sind ca 120 Frequenzen)

Ich hoffe auf eure Hilfe.
Pemue
Mitglied: Biber
01.01.2006 um 22:53 Uhr
Moin Pemue,
Dir auch ein erfolgreiches oder zumindest unterhaltsames Jahr 2006.

In dem <a href=http://www.administrator.de/Workshop_Batch_for_Runaways_Part_III_Datums ... target="blank"> Batch-Tut III </a> steht unter anderen eine GetAllDateTimeInfos.bat bereit zum Copy & Paste'n. Am besten vorher auf Druckansicht umschalten wegen der Zeilenumbrüche.

Die liefert Dir alle Datums- und Zeitvariablen mit folgendem auch abgedruckten Grundgerüst:

Call GetAllDateTimeInfos /s
(alle Variablen sind gesetzt)
set logfilename=%JJ%-%MM%-%TT%_%hh%$%min%.log
Call GetAllDateTimeInfos /u

Für die restliche Übersetzung (die Frequenzen) würde ich eine Schleife über diese merkwürdige Set.cmd laufen, wenn die schon mal da ist.
Ich nutze die jetzt allerdings nicht als Batchdatei, sondern als normale x-beliebiege Textdatei.

Wenn es eine einmalige Aktion ist, würde ich es direkt in einer *.bat-Datei machen.

Ungetestete Skizze:
<font class=code>::---------snipp RenameWavs.Bat
@echo off & setlocal
Pushd X:\Verzeichnis\Mit\Den\Umzubenennenden\Dateien
:: For..IN..DO..Anweisung über alle Dateien ....
for /f "tokens=2,3 delims== " %%i in (Pfad\zur\set.cmd) do call :HandleFreq %i %j
Call GetAllDateTimeInfos /u
PopD
goto :eof
~~~~Ende der Schleife über alle 120 Frequenzen; Ende des Batches
:HandleFreq Para1 ist alteFreq wie 172.3800; Para2 ist neuerFreqName Kanal-A
FOR /F %%a in (Dir /b /A:-d audio__%1_*.wav) Do Call :RenameThem %%a %2 %%~ta
goto :eof
~~~ Ende der Schleife über alle Dateien mit Freq 172.3800...etc. im Namen
:RenameThem ...Para1 ist Filename; Para2 neuerFreqName
:: Parameter 3 ist das Dateidatum Para4 die Dateizeit
Call GetAllDateTimeInfos /s %3 %4
:: (alle Variablen sind gesetzt auf die Datei-Erstellungszeit)
:: Vorgabe :alter name: audio__172.3800_2006-01-01_16-18-50_to_2006-01-01_16-18-51.wav
:: .........neuer name: %Erstellungsdatum(JJJJ.MM.TT)%_%Erstellungszeit(HH:MM:SS)%_%Neuer Name für 172.3800(Kanal-A)%.wav
Ren %1 %JJ%%MM%%TT%_%HH%h%MM%m%SS%_%2
goto :eof
:: ---------snapp RenameWavs.bat</font>

Geändert habe ich bei der Umnbenennerei die Doppelpunkte bei der Zeitangabe ("22:53:07") in "22h53m07", weil Doppelpunkte in Dateinamen nur Unbill provozieren.*gg

Pfade zu Deinen *.wav-Dateien, zur GetAllDateTimeInfos.bat und zur Set.cmd musst Du bitte anpassen.
HTH Biber
Bitte warten ..
Mitglied: Pemue
02.01.2006 um 18:47 Uhr
Hallo Biber.

Vielen Dank erstmal für die schnelle Skizze.
Nach einiger bastelei hab ich sie zum laufen bekommen.
Noch ein Problem gibts:

FOR /F %%a in ('Dir /b /A:-d audio__%1_*.wav') Do Call :RenameThem %%a %2 %%~ta

gibt leider Datum und Zeit ohne Sekunden aus.
Die sind aber wichtig, da in einer Minute mehrere Files erstellt werden und sich somit Filenamen doppeln würden. Gibts da ne andere Lösung?

Pemue
Bitte warten ..
Mitglied: Pemue
02.01.2006 um 18:57 Uhr
sorry noch ein Nachsatz:

es kann auch das Änderungsdatum sein, weil ist identisch und wird nich geändert.

GRüsse
Bitte warten ..
Mitglied: Biber
02.01.2006 um 20:44 Uhr
Hmmm, Pemue,

ich hab Deine Antwort grad gelesen und auch mal schnell durchprobiert - bei den CMD-Befehlen scheint erstmal kein von M$ mitgelieferter dabeizusein, den ich zur Übergabe/Anzeige der Sekunden von Erstellungs./Änderungsdatum überreden könnte.

Auch die Herumschrauberei an Einstellungen/Ländereinstellungen/Uhrzeit ändert nichts daran, auch wenn dort das Uhrzeit-Format mit Sekunden und meinetwegen Hundertsel-Sekunden eingestellt ist (am schnellsten überprüfbar bei den DIR-Ausgaben).

Lediglich bei der GUI-Anzeige im Explorer läßt sich M$ dazu überreden, unter "Eigenschaften" einer Datei auch die Sekundenwerte mit auszugeben.

Also... Alternativstrategien:
a) einer von uns treibt ein Konsolen-Utilitity auf, dass die Dateierstellungs-/Dateiänderungsdatumswerte mit Sekunden anzeigt--- selbst das M$-Filever-Utilitily macht das nicht *grummel*
b) einer von uns schreddert 5 Zeilen in Java-Script oder VB-Skript zusammen, die das tun
c) Wir übernehmen die Informationen aus dem alten Dateinamen, da stehen sie ja schon
d) Wir fügen zwei, drei Zeilen in den Batch ein zur Behandlung von Dateinamens-Kollisionen... dann heißt eben die zweite Datei (SülzDiBülz)A.wav und die dritte (SülzDiBülz)B.wav...

Mir egal, welche Variante...

Gruß Biber

P.S. Aber Kollisionen können doch nur auftreten, wenn diese Jingles auch in der gleichen Minute auf dem gleichen Kanal gesendet werden. Was sind das denn für *.wav's? Werbespots? Dann gibt es auch zentrale Sendelisten, in denen die Spots mit VON/BIS-Zeiten angekündigt/protokolliert werden...
Bitte warten ..
Mitglied: Pemue
03.01.2006 um 01:06 Uhr
hallo biber.

nochmals danke für deine hilfe. wär sonst echt aufgeschmissen.

zum ps: sind aufnahmeschnipsel wie man sie aus dem amateurfunkbereich kennt. oft nur wenige sekunden lang, auf verschiedenen kanälen nacheinander aufgenommen. innerhalb einer minute fallen da bis zu zehn schnipsel an.

hab mich mal testhalber auf strategie c) gestürzt:

@echo off & setlocal
Pushd D:\server\rec\test
for /f "tokens=1,2 delims= " %%i in (D:\batch\set.txt) do call :DateiName %%i %%j
Call D:\batch\GetAllDateTimeInfos /u
PopD
goto :eof
~~~~Ende der Schleife über alle 120 Frequenzen; Ende des Batches

:DateiName
set Frequenz=%1
set Kanal=%2
FOR /F %%a in ('Dir /b /A:-d audio__%Frequenz%_*.wav') Do Call :Datum %%a %2
goto :eof
~~~ Ende der Schleife über alle Dateien mit Freq 172.3800...etc. im Namen

:Datum
set OrgDatei=%1
for /F "tokens=3,4 delims=_" %%b in ('dir /b audio__%fre%_*.wav') do Call :DatumRev %%b %%c
goto :eof

:DatumRev
set Datum=%1
set Time=%2
for /F "tokens=1,2,3 delims=." %%c in ("%Datum%") do Call :Rename %%c %%d %%e
goto :eof

:Rename
set DD=%1
set MM=%2
set JJ=%3
ren %OrgDatei% %JJ%.%MM%.%DD%_%Time%_%Kanal%.wav
goto :eof
wahrscheinlich aus der sicht des profis nicht optimal und hat auch einen haken:

die zeile:
for /F "tokens=3,4 delims=_" %%b in ('dir /b audio__%fre%_*.wav') do Call :DatumRev %%b %%c
liefert mir für alle gleiche frequenzen (z.b. 172.3800) die selbe zeit inclusive der sekunden.
führt dann wieder zur kollision bei der umbenennung.

und noch ne zweite schwäche:
wenn %172.3800% im verzeichnis grad nicht existiert (weil vielleicht schon umbenannt) gibts immer wieder die schöne meldung: ...das system kann die datei nicht finden.

hilfreich wäre eine @if exist (%172.3800%) schleife.
nur wie geht das???

danke für die geduld
pemue
Bitte warten ..
Mitglied: Biber
03.01.2006 um 01:31 Uhr
*lacht*
Welche Geduld, Pemue?
Bin ja froh, dass ich hier einen ruhigen Thread finde, wo nicht dauernd irgendwelche punkte-geierigen Chatter dazwischenquaken.. Die beharken sich inzwischen schon, wenn es um die beste Methode zur Trojanerentsorgung geht.. *kopfschüttel*

Ich nehme mir Deinen Ansatz mal mit und schau es mir in Ruhe an.

Wir bekommen das schon hin.
Aber jetzt mach ich erstmal etwas outside of forum

Bis dann
Biber
Bitte warten ..
Mitglied: Biber
03.01.2006 um 15:03 Uhr
Moin Pemue,

ich versuch mal, die Mimik zum Rausfieseln der Uhrzeiten aus dem "alten" Dateinamen in einem Zwischenschritt herzuleiten, bevor ich das in den Batch einbaue.

Die Strategie war ja wie folgt:
a) aus einer Liste (set.txt) auslesen, welche Frequenzen wir überhaupt übersetzen können.
Den Job macht die Hauptschleife, die dann für alle Freqenzen die "Unterroutine ":Dateiname" ruft. Klappt.
b) diese ":Dateiname" ermittelt alle Dateinamen mit dieser Frequenz im Namen.Klappt auch.
c) Mit jedem einzelnen dieser Dateinamen soll die Umbenennerei stattfinden,
Das über ich jetzt mal am CMD-Prompt.
In der Klammer der FOR...IN..DO Anweisung steht jeweils der Dateiname ohne Extension,
z.B. der Name "audio__172.3800_2006-01-01_16-18-50_to_2006-01-01_16-18-51".

(ist eine Eingabezeile, auch wenn es in der Darstellung umgebrochen wird)
$cmd$ for /f "tokens=1-15 delims=-_" %a in
("audio__172.3800_2006-01-01_16-18-50_to_2006-01-01_16-18-51")
do @echo %a %b %c %d %e %f %g %h %i %j %k %l &m %n %o

(Output)
audio 172.3800 2006 01 01 16 18 50 to 2006 01 01 16 18 51

("audio"=%a;"172.3800"=%b; "2006"=%c"; "01"=%d "01"=%e; "16"=%f ...
...etc für 18 50 to 2006 01 01 16 18 51
Also, gute Nachricht: wenn ich den alten Dateinamen mit "-" und "_" als Trennzeichen zerlege, habe ich alle nötigen Informationen inclusive der Sekundenangabe.
Ich muss nur ein bisschen abzählen. Da ja nun sogar zwei Zeiten mit Sekundenangaben da sind, entscheide ich mich mal für die Ende-Zeit - kommt der Erstellungszeit am nächsten.
Wenn ich nur die brauche, sind das die letzten Tokens Ende-Datum "2006 01 01" und Ende-Zeit "16 18 51", also kann ich die Schleife vereinfachen.

$cmd$ for /f "tokens=10-15 delims=-_" %a in ("audio__172.3800_2006-01-01_16-18-50_to_2006-01-01_16-18-51") do @echo %a %b %c %d %e %f
(Output)
2006 01 01 16 18 51

Wenn die Kombination "Frequenz" und "Sende-Endezeitpunkt" bei Dir eindeutig ist, dann können wir jetzt die ursprüngliche Skizze ziemlich weit zusammendampfen, denn auch die Ermittlung des Dateidatums ist jetzt überflüssig.
<font class=code>:: -----snipp RenameWavs2.bat Ungetestete Skizze!!
@echo off & setlocal
Pushd D:\server\rec\test
for /f "tokens=1,2 delims= " %%i in (D:\batch\set.txt) do call :DateiName %%i %%j
PopD
goto :eof
~~~~Ende der Schleife über alle 120 Frequenzen; Ende des Batches

:DateiName ...übergibt je EINEN gefundenen Dateinamen OHNE .wav
set "Frequenz=%1" && Rem Nur wegen der Lesbarkeit gesetzt
set "Kanal=%2" && Rem Nur wegen der Lesbarkeit gesetzt; kann als %2 übergeben werden
FOR /F %%a in ('Dir /b /A:-d audio__%Frequenz%_*.wav') Do Call :Datum %%~na %2
goto :eof
~~~ Ende der Schleife über alle Dateien mit Freq 172.3800...etc. im Namen

:Datum ACHTUNG Para1 (orgDatei) kommt jetzt OHNE Extension an
:: <s>set "OrgDatei=%1</s> %Kanal% ist auch als Para2 verfügbar.
for /f "tokens=10-15 delims=-_" %%a in ("%1") do (
ren %1.wav %%a-%%b-%%c_%%d_%%e_%%f_%Kanal%.wav
)
goto :eof
:: RenameWavs2.bat---------------------------</font>

Und dieses Problem kann auch nicht mehr auftreten: [Edit] ..dachte ich - s. unten [/Edit]
und noch ne zweite schwäche:
wenn %172.3800% im verzeichnis grad nicht existiert (weil vielleicht schon umbenannt)
gibts immer wieder die schöne meldung: ...das system kann die datei nicht finden.
>>hilfreich wäre eine @if exist (%172.3800%) schleife.

HTH Biber
Bitte warten ..
Mitglied: Pemue
04.01.2006 um 00:00 Uhr
mit dem umbenennen klappt jetzt super. bin begeistert.
aber das problem mit dem ...kann datei nicht finden... hab ich noch.
liegt daran, das aus der set.txt frequenzen eingelesen werden, die in diesem zeitraum gar nicht aufgenommen werden.

da muss also doch irgendwo eine if anweisung hin. if audio__%Frequenz%_*.wav not exist soll er bitteschön halt mit der nächsten frequenz weitermachen.
Bitte warten ..
Mitglied: Biber
04.01.2006 um 00:15 Uhr
Ach so, Pemue,
sorry, hatte ich ganz vergessen... wenn es weiter nix ist...

Also, da würde ich hier in diesem Block ansetzen:

...
DateiName ...übergibt je EINEN gefundenen Dateinamen OHNE .wav
if not exist audio__%1_*.wav goto :eof
set "Frequenz=%1" && Rem Nur wegen der Lesbarkeit gesetzt
set "Kanal=%2" && Rem Nur wegen der Lesbarkeit gesetzt; kann als %2 übergeben werden
FOR /F %%a in ('Dir /b /A:-d audio__%Frequenz%_*.wav') Do Call :Datum %%~na %2
goto :eof
...

Geht am Schnellsten... wenn es Dir allerdings woanders lieber ist...?? *fragend guckt*

HTH Biber
Bitte warten ..
Mitglied: Pemue
04.01.2006 um 00:41 Uhr
hallo biber.

bin noch mehr begeistert.
genau so hatte ich mir das vorgestellt. ich find das klasse, das du deine zeit für dau's wie mich opferst und dabei wirklich ne menge von dem kram verstehst.

hier nochmal für alle - denen es ähnlich wie mir geht - der funktionierende bach :

-----------------------------------------schnipp
@echo off & setlocal
Pushd D:\server\rec

delen d:\server\rec\* /[d,-3] /Y
delen d:\server\rec\* /[s0,10000] /Y

for /f "tokens=1,2 delims= " %%i in (D:\batch\set.txt) do call :DateiName %%i %%j
PopD
goto :eof
~~~~Ende der Schleife über alle 120 Frequenzen; Ende des Batches

:DateiName
if not exist audio__%1_*.wav goto :eof
set "Frequenz=%1"
set "Kanal=%2"
FOR /F %%a in ('Dir /b /A:-d audio__%Frequenz%_*.wav') Do Call :Datum %%~na %2
goto :eof
~~~ Ende der Schleife über alle Dateien mit Freq 172.3800...etc. im Namen

:Datum
:: set "OrgDatei=%1 %Kanal% ist auch als Para2 verfügbar.
for /f "tokens=4-10 delims=-_." %%a in ("%1") do (
ren %1.wav %%c-%%b-%%a_%%d-%%e-%%f__%Kanal%.wav
)
goto :eof
-----------------------------------------schnipp

gute nacht noch und vielen dank.

pemue
Bitte warten ..
Mitglied: Biber
04.01.2006 um 00:58 Uhr
Uuuuups, Pemue,

jetzt kann ich aber auch von Dir lernen - was sind das denn für Zeilen?

delen d:\server\rec\* /[d,-3] /Y
delen d:\server\rec\* /[s0,10000] /Y

Ein aufgebohrter Delete-Befehl? Alles löschen, was älter drei Tage ist? Und kleiner 10000 Byte?
Wo gibts das denn?

Immer gern dazu lernend
Biber
Bitte warten ..
Mitglied: Pemue
04.01.2006 um 01:06 Uhr
in der tat. ein niedliches kleines programm mit namen delen.
hat mir viel zeit erspart... hätte dich sonst wohl noch mehr gelöchert.

pemue
Bitte warten ..
Neuester Wissensbeitrag
Microsoft

Lizenzwiederverkauf und seine Tücken

(5)

Erfahrungsbericht von DerWoWusste zum Thema Microsoft ...

Ähnliche Inhalte
Exchange Server
gelöst Exchange und Outlook 2013 Name ändern (3)

Frage von Markowitsch zum Thema Exchange Server ...

Erkennung und -Abwehr
Lokale Virenprüfstation : Windows 10: Ändern von Einstellungen verhinden (5)

Frage von TryAndSolve zum Thema Erkennung und -Abwehr ...

Batch & Shell
Dateinamen nach Zeichnen abschneiden - Batch-Shell (9)

Frage von cberndt zum Thema Batch & Shell ...

Windows Server
gelöst Word 2010 : Absatz - Abstand per GPO ändern (3)

Frage von johanna-p zum Thema Windows Server ...

Heiß diskutierte Inhalte
Windows Netzwerk
Windows 10 RDP geht nicht (16)

Frage von Fiasko zum Thema Windows Netzwerk ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

Microsoft Office
Keine Updates für Office 2016 (13)

Frage von Motte990 zum Thema Microsoft Office ...