pdiddo
Goto Top

Batch erst starten wenn bestimmte Datei vorhanden ist

Hi Jung,

in meiner batch wird eine .txt Datei bearbeitet.
Diese .txt ist aber nur bei einer bestimmten Ereignisauslösung vorhanden.
Jetzt wäre es super, wenn die batch so lange nach der Datei (im selben Ordner) sucht, bis diese vorhanden ist.
Danach sollte dann das restliche Script der batch durchlaufen.
U.a. wird die .txt umbenannt und verschoben.

Vielen Dank!!!

Content-ID: 304653

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

Ausgedruckt am: 22.11.2024 um 16:11 Uhr

Franz-Josef-II
Lösung Franz-Josef-II 16.05.2016 um 09:18:58 Uhr
Goto Top
Ein IFEXIST hinein und dann eine Verzweigung
-> bei Nein: Warte eine Intervallzeit, dann beginne von vorn
-> bei Ja: Mache das was du sollsts und beginne von vorne

Alternativ:
-> bei Nein: beende
-> bei Ja: Mache was du sollst und beende
und sage dem Betriebssystem alle wieviel Minuten (Stunden, Tage, Jahre) das Progrämmchen gestartet werden soll.
rubberman
rubberman 16.05.2016 um 13:07:02 Uhr
Goto Top
Zitat von @pdiddo:

Diese .txt ist aber nur bei einer bestimmten Ereignisauslösung vorhanden.

Und an dieses Ereignis knüpfst du einen geplanten Task an, der dein Batchscript startet. Fertig.

Grüße
rubberman
pdiddo
pdiddo 16.05.2016 um 13:54:15 Uhr
Goto Top
Die Zeit, bis die Datei vorhanden ist, ist unterschiedlich. Aber danke face-smile
pdiddo
pdiddo 16.05.2016 um 14:44:28 Uhr
Goto Top
franz-josef, das klingt gut.
Hast du da ein Script ?
Franz-Josef-II
Lösung Franz-Josef-II 16.05.2016 um 15:00:19 Uhr
Goto Top
Nicht direkt, aber es ist eh recht einfach face-wink

:START
if not exist c:\ordner\datei.txt goto ende

Mache was du willst oder brauchst

:ENDE
timeout /t 600
goto start


http://www.its05.de/computerwissen-computerhilfe/programmierung/stapelv ...

https://de.wikibooks.org/wiki/Batch-Programmierung:_Batch-Befehle
rubberman
rubberman 16.05.2016 um 19:27:04 Uhr
Goto Top
Alternativ kannst du das Event der Dateierstellung per WMI abfangen. Batch - JScript Kombination:

*.bat
@if (@a)==(@b) @end /*
@echo off &setlocal

REM Darauf warten, dass "test.txt" erstellt wird  
cscript //nologo //e:jscript "%~fs0" "test.txt"  

REM Mach was ...
echo Datei wurde erstellt.
pause

exit /b
*/

var colEvents = WScript.CreateObject("WbemScripting.SWbemLocator").ConnectServer(".", "root\\cimv2").ExecNotificationQuery(  
  "SELECT * FROM __InstanceCreationEvent WITHIN 1 WHERE TargetInstance ISA 'CIM_DirectoryContainsFile' " +  
  "AND TargetInstance.GroupComponent = 'Win32_Directory.Name=\"" +  
  WScript.CreateObject("Scripting.FileSystemObject").GetParentFolderName(WScript.ScriptFullName).replace(/\\/g, "\\\\\\\\") + "\"'");  

while(true) {
  var file = colEvents.NextEvent().TargetInstance.PartComponent.split(/[\"\\]/g).pop();  
  if (file.toLowerCase() == WScript.Arguments(0).toLowerCase()) {
    WScript.Quit();
  }
}
Grüße
rubberman
pdiddo
pdiddo 16.05.2016 um 19:55:16 Uhr
Goto Top
Das ist bestimmt gut.
Aber in dem Fall nicht nötig, da mehrere Server arbeiten und verschiedebe SSH Verbindungen zum Datenaustausch genutzt werden.

Danke trotzdem !

LG