Jump to content
Andreas91

Batchdatei zum Umbennen und Verschieben einer Datei auf ein Netzlaufwerk

Empfohlene Beiträge

Hallo zusammen,

 

ich bin neu hier und ich hoffe ihr könnt mir weiterhelfen.

 

Kurz zur Ausgangssituation:

Ich habe an der Arbeit ein Messgerät, welches automatisch Dateien (ohne Dateiendung) mit Messergebnissen auf ein Netzlaufwerk 1 abspeichert.

Nun möchte ich von einem Rechner aus diese Dateien vom Netzlaufwerk 1 auf ein Netzlaufwerk 2 kopieren, da diese Dateien von dort aus weiterverarbeitet werden.

Zuvor muss allerdings noch die Endung der Datei auf .xyz (beispielhaft) geändert werden.

Dies alles soll mithilfe einer Batchdatei erfolgen, welche dann automatisch einmal pro Stunde ausgeführt werden soll.

 

Leider kann das Messgerät die Daten nicht direkt im richtigen Format abspeichern und aufgrund fehlender Rechte nicht auf dem Netzlaufwerk 2 abspeichern.

 

Ich habe auch schon angefangen die Batchdatei zu erstellen: 

 

@echo off
net use Z: \\Netzlaufwerk2 /user:USER2 PASSWORT2
dir "\\Netzlaufwerk1\Unterordner\*.dat" /B /S >Liste.txt
for /f "delims=" %%i in (Liste.txt) do (ren "%%i" "*.xyz")
for /f "delims=" %%j in ('dir /s /b /a-d "\\Ntzlaufwerk1\Unterordner\*.xyz"') do move "%%j" "\\Netzlaufwerk2">nul

 

 

Allerdings funktioniert das nicht und ich habe davon nur wenig Ahnung und hoffe somit auf eure Unterstützung.
 

Vielen Dank schon mal im Voraus.

 

Andreas

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Moin,

 

was genau funktioniert denn nicht? Wir helfen dir gern, aber ein bisschen mehr Information brauchen wir schon.

 

Prinzipiell würde ich nicht mit zwei Schleifen arbeiten, sondern mit einer. Dort könnte für jede Datei ein Kopierbefehl stehen, der die Datei mit dem "falschen" Namen unter "richtigem" Namen am Ziel ablegt. Ein zweiter Schritt in derselben Schleife löscht dann das Original.

 

Außerdem würde ich Ausgaben erst dann unterdrücken (>nul), wenn alles läuft. Bis dahin sind Fehlermeldungen ja vielleicht ganz hilfreich.

 

Und schließlich wäre es besser, wenn dein Skript gleich mit dem passenden User ausgeführt wird. Damit musst du dann das Kennwort nicht im Klartext im Batchcode hinterlegen, wo es nicht hingehört.

 

Gruß, Nils

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Hallo Nils,

 

vielen Dank für deine schnelle Antwort.

 

Zum Punkt was nicht genau funktioniert:

Momentan habe ich das Problem, dass zwar die originalen Dateien umbenannt werden, allerdings nicht ins Ziellaufwerk kopiert werden.

 

Da beim Ziellaufwerk Benutzername und Kennwort verlangt werden, habe ich das auf die oben dargestellte Variante versucht. Dies klappt aber nicht.

Ob Benutzername und Kennwort nun im Skript stehen oder nicht ist eigentlich egal, da an diese Datei niemand anderes etwas ändern wird, sobald diese funktioniert.

 

Wie gesagt, ich habe leider nicht sehr viel Ahnung von Batch-Dateien und sollte das "nur mal schnell" nebenbei schreiben :/

 

Meine Frage im Allgemeinen lautet daher:

Ist der Ansatz schon gut so oder kann man das ganze vielleicht doch noch viel kürzer und einfacher schreiben?

 

Gruß

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Wenn es in der Aufgabenplanung laufen soll verwende UNC-Pfade

ohne das z: bei net use

 

Was passiert wenn Du den Net use in einer cmd ausführst?

Kannst Du eine Datei via copy in Ziel kopieren? 

bearbeitet von mba

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Moin

 

Versuchsweise setzte ich wohl echo anstelle move ein und liesse auch Netzlaufwerk und Unterdrückung weg, setzte Pause dazu für die schrittweise Ausführung dazu

 

 

or /f "delims=" %%j in ('dir /s /b /a-d "\\Ntzlaufwerk1\Unterordner\*.xyz"') do echo "%%j" & pause

 

Dann sähe ich, ob der Parameterstring richtig ist. Dabei beachtete ich, ob es ein nicht sichtbares Leerzeichen am Ende gäbe.

bearbeitet von lefg

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Da beim Ziellaufwerk Benutzername und Kennwort verlangt werden, habe ich das auf die oben dargestellte Variante versucht.

Welche Rechte hat denn der Benutzer unter dessen Account du das Script ausführst auf dem Ziellaufwerk?

 

Vielleicht wäre es einfacher und besser dem User mit dem das Script ausgeführt wird die entsprechenden rechte auf dem Ziellaufwerk einzurichten. Dann fällt der Punkt mit dem Passwort im Klartext in der Batch Datei schon mal weg.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Verzichte auf das net use. das macht spätestens bei der Autmatisierung per Task Scheduler Probleme. Weiterhin würde ich das mit Powershell machen, da ist das alles irgendwie hübscher.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden

×