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-Key: 304653

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

Printed on: April 20, 2024 at 00:04 o'clock

Member: Franz-Josef-II
Solution Franz-Josef-II May 16, 2016 at 07:18:58 (UTC)
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.
Member: rubberman
rubberman May 16, 2016 at 11:07:02 (UTC)
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
Member: pdiddo
pdiddo May 16, 2016 at 11:54:15 (UTC)
Goto Top
Die Zeit, bis die Datei vorhanden ist, ist unterschiedlich. Aber danke face-smile
Member: pdiddo
pdiddo May 16, 2016 at 12:44:28 (UTC)
Goto Top
franz-josef, das klingt gut.
Hast du da ein Script ?
Member: Franz-Josef-II
Solution Franz-Josef-II May 16, 2016 at 13:00:19 (UTC)
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
Member: rubberman
rubberman May 16, 2016 at 17:27:04 (UTC)
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
Member: pdiddo
pdiddo May 16, 2016 at 17:55:16 (UTC)
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