Befehl um nur eine Datei unabhängig vom Dateinamen zu verschieben
Hallo Administrator-Gemeinde,
ich habe folgendes Problem, ich benötige den Befehl um eine Datei zu verschieben. Allerdings sollte aus einem Ordner der evtl. mehrere Dateien enthält nur eine Datei verschoben werden. Die Dateien in diesem Ordner können unterschiedliche Dateinamen haben. Im Moment sieht meine Batch so aus:
die Batch soll also erstmal auf einem Zielrechner abfragen ob die Datei CPUnotbusy.txt vorhanden ist. Ist diese Datei vorhanden, soll EINE Datei aus dem Ordner C:\webcast\Aufnahme auf diesen Zielrechner verschoben werden. Danach soll der nächste Zielrechner abgefragt werden und evtl wieder EINE Datei verschoben werden. Das ganze läuft als Loop und soll auch funktionieren, wenn nach dem Start der Batch neue Dateien in den Ordner C:\webcast\Aufnahme hinzugefügt werden.
Hat jemand eine Idee?
Danke im voraus
ich habe folgendes Problem, ich benötige den Befehl um eine Datei zu verschieben. Allerdings sollte aus einem Ordner der evtl. mehrere Dateien enthält nur eine Datei verschoben werden. Die Dateien in diesem Ordner können unterschiedliche Dateinamen haben. Im Moment sieht meine Batch so aus:
:run
if exist \\192.168.1.2\C\CPUnotbusy.txt move C:\webcast\Aufnahme\test.txt \\192.168.1.2\C\watchin
if exist \\192.168.1.3\C\CPUnotbusy.txt move C:\webcast\Aufnahme\test.txt \\192.168.1.3\C\watchin
if exist \\192.168.1.4\C\CPUnotbusy.txt move C:\webcast\Aufnahme\test.txt \\192.168.1.4\C\watchin
if exist \\192.168.1.5\C\CPUnotbusy.txt move C:\webcast\Aufnahme\test.txt \\192.168.1.5\C\watchin
if exist \\192.168.1.6\C\CPUnotbusy.txt move C:\webcast\Aufnahme\test.txt \\192.168.1.6\C\watchin
if exist \\192.168.1.7\C\CPUnotbusy.txt move C:\webcast\Aufnahme\test.txt \\192.168.1.7\C\watchin
if exist \\192.168.1.8\C\CPUnotbusy.txt move C:\webcast\Aufnahme\test.txt \\192.168.1.8\C\watchin
if exist \\192.168.1.9\C\CPUnotbusy.txt move C:\webcast\Aufnahme\test.txt \\192.168.1.9\C\watchin
if exist \\192.168.1.10\C\CPUnotbusy.txt move C:\webcast\Aufnahme\test.txt \\192.168.1.10\C\watchin
if exist \\192.168.1.11\C\CPUnotbusy.txt move C:\webcast\Aufnahme\test.txt \\192.168.1.11\C\watchin
if exist \\192.168.1.12\C\CPUnotbusy.txt move C:\webcast\Aufnahme\test.txt \\192.168.1.12\C\watchin
sleep 200
goto run
die Batch soll also erstmal auf einem Zielrechner abfragen ob die Datei CPUnotbusy.txt vorhanden ist. Ist diese Datei vorhanden, soll EINE Datei aus dem Ordner C:\webcast\Aufnahme auf diesen Zielrechner verschoben werden. Danach soll der nächste Zielrechner abgefragt werden und evtl wieder EINE Datei verschoben werden. Das ganze läuft als Loop und soll auch funktionieren, wenn nach dem Start der Batch neue Dateien in den Ordner C:\webcast\Aufnahme hinzugefügt werden.
Hat jemand eine Idee?
Danke im voraus
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 95269
Url: https://administrator.de/contentid/95269
Ausgedruckt am: 22.11.2024 um 22:11 Uhr
4 Kommentare
Neuester Kommentar
Hallo megamazl!
Mein Idee sieht zunächst einmal vor, die Rechnernummer per Schleife zu vergeben - entweder, wie im Beispiel gezeigt, als laufende Nummer von 2 bis 12, oder indem in Zeile 3 alle infrage kommenden Rechner aufgelistet werden, also etwa:
Der Rest sieht so aus:
Grüße
bastla
Mein Idee sieht zunächst einmal vor, die Rechnernummer per Schleife zu vergeben - entweder, wie im Beispiel gezeigt, als laufende Nummer von 2 bis 12, oder indem in Zeile 3 alle infrage kommenden Rechner aufgelistet werden, also etwa:
for %%i in (2 3 5 9 11 12) do (
@echo off & setlocal
:run
for /l %%i in (2,1,12) do (
if exist \\192.168.1.%%i\C\CPUnotbusy.txt (
set done=
for %%f in (C:\webcast\Aufnahme\*.*) do if not defined done (
echo %%i: %%f
move "%%f" \\192.168.1.%%i\C\watchin
set done=true
)
)
)
sleep 200
goto :run
bastla
Hallo megamazl!
Die Variable %done% wird als Schalter verwendet - wenn die erst(best)e Datei zum Rechner mit der IP 192.168.1.%%i verschoben wurde, sollen alle anderen, die sich aus dem Suchmuster "C:\webcast\Aufnahme\*.*" ergeben, nicht mehr verschoben werden.
Dies soll erreicht werden, indem der Schalter zunächst gelöscht wird ("set done=") und nach dem Verschieben der ersten Datei (mit einem beliebigen Inhalt) gesetzt wird. Für alle weiteren Dateien werden dann die Zeilen 7 bis 9 nicht mehr ausgeführt.
Ändere zum Testen das "echo off" in ein "echo on" und schau mal, ob Du so den Fehler findest (bei mir hat das nämlich funktioniert) ...
Grüße
bastla
Die Variable %done% wird als Schalter verwendet - wenn die erst(best)e Datei zum Rechner mit der IP 192.168.1.%%i verschoben wurde, sollen alle anderen, die sich aus dem Suchmuster "C:\webcast\Aufnahme\*.*" ergeben, nicht mehr verschoben werden.
Dies soll erreicht werden, indem der Schalter zunächst gelöscht wird ("set done=") und nach dem Verschieben der ersten Datei (mit einem beliebigen Inhalt) gesetzt wird. Für alle weiteren Dateien werden dann die Zeilen 7 bis 9 nicht mehr ausgeführt.
Ändere zum Testen das "echo off" in ein "echo on" und schau mal, ob Du so den Fehler findest (bei mir hat das nämlich funktioniert) ...
Grüße
bastla