fischle63
Goto Top

Verzeichniss überwachen Datei kopieren und umbenennen

Hallo,

Habe folgendes Problem:

In einem Verzeichniss sind Dateien mit dem Suffix ".nd" enthalten. Bsp. "00000010.nd"
Ich brauche eine Kopie dieser Datei ohne Führende nullen und mit der Endung ".eia" Bsp. "10.eia"
Bis dahin ist das auch soweit kein Problem.

Mein bisheriger Code sieht so aus:
@echo off & setlocal enableDelayedExpansion
xcopy *.nd *.eia /D/Y 
For %%a in (0???????.nd) do Set /a "Name=1%%~na-100000000" & ren %%a !name!.eia  
Das funktioniert auch soweit ganz gut.


Ändere ich jetzt "00000010.nd" muß eine neue Datei (oder die vorhandene) mit der Endung "10.eia" erstellt/geändert werden.

Nur lasse ich es ein zweites mal laufen, bekomme ich immer die Meldung, daß die Datei schon vorhanden ist.
Ich nehme an, das die For-Schleife diese Meldung ausgibt, da ja die Datei "10.eia" schon Existiert.
Würde die For-Schleife ohne Nachfrage die schon vorhandene Datei "10.eia" einfach überschreiben,
währe mein Problem gelöst.

Content-Key: 331766

Url: https://administrator.de/contentid/331766

Ausgedruckt am: 28.03.2024 um 11:03 Uhr

Mitglied: emeriks
Lösung emeriks 10.03.2017 um 08:56:20 Uhr
Goto Top
Hi,
entweder Du nimmst statt "ren" ein "copy" mit anschließendem "del" oder vor dem "ren" ein "del"

@echo off & setlocal enableDelayedExpansion
xcopy *.nd *.eia /D/Y
For %%a in (0???????.nd) do Set /a "Name=1%%~na-100000000" & copy %%a !name!.eia & del %%a  

@echo off & setlocal enableDelayedExpansion
xcopy *.nd *.eia /D/Y
For %%a in (0???????.nd) do Set /a "Name=1%%~na-100000000" & del !name!.eia & ren %%a !name!.eia  

(nicht getestet)
E.
Mitglied: rubberman
Lösung rubberman 11.03.2017 um 13:03:31 Uhr
Goto Top
Hallo fischle63.

Das kannst du eigentlich in einem Einzeiler abfackeln
@echo off &setlocal
for %%i in ("0???????.nd") do for /f "tokens=* delims=0" %%j in ("%%~ni") do move "%%~i" "%%~j.eia"  

Grüße
rubberman
Mitglied: fischle63
fischle63 13.03.2017 um 07:36:59 Uhr
Goto Top
Ich werde die Methoden mal ausprobieren und anschließend berichten.
Vielen Dank nochmal für eure schnelle Hilfe.

gruß
Peter
Mitglied: fischle63
fischle63 13.03.2017 um 10:21:37 Uhr
Goto Top
Hallo,

Emeriks Methode funktioniert. Suuuuper....!!!

Den Einzeiler habe ich nicht mehr probiert, da es jetzt läuft. Trotzdem vielen Dank für eure Hilfe.

Noch was, da ich ein Verzeichniss mit diesem Batch überwachen will, habe ich mal ne Endlosschleife gebildet.

: Endlosschleife
goto Endlosscheife

gibt es einen Befehl, der die Schleife alle 2 Sekunden abfragt?
Mitglied: emeriks
Lösung emeriks 13.03.2017 aktualisiert um 19:12:51 Uhr
Goto Top
Wenn schon Endlosschleife, dann einfach ein " & timeout 2" ans Ende der "For...."-Zeile.
"Intelligenter" wäre natürlich ein FileSystemWatcher unter PowerShell oder ein Dateiüberwachung mit Windows Bordmitteln und Abgriff der erzeugten Eventlog-Einträge mit Trigger für die Aufgabenplanung.
Mitglied: fischle63
fischle63 13.03.2017 um 21:20:29 Uhr
Goto Top
Hallo,

Hab den Timeout /f 2 benutzt.
Auch das funktioniert richtig gut.

Mein Problem ist gelöst.....!

Ich bedanke mich nochmals bei euch für eure Hilfe.

gruß

Peter