2016-07-08 2 views
0

Ich habe eine Batch-Datei in meinem Netzwerk teilen, sagen \ Sids \ Awesome \ Network \ Share.bat. Ich habe Kopien dieser Fledermaus-Datei auf mehreren Computern. Ich möchte die Datei so einrichten, dass ich Share.bat auf meiner Netzwerkfreigabe aktualisieren kann, und wenn ich Share.bat auf einem lokalen Computer ausführe, kann sie den Zeitpunkt der letzten Änderung für die Kopie in der Netzwerkfreigabe überprüfen und Aktualisieren Sie es selbst. Irgendwelche Vorschläge, wie man das macht?Aktualisieren Sie eine Batch-Datei basierend auf dem Zeitpunkt der letzten Änderung für eine Datei in einer Netzwerkfreigabe

Alle meine Suchergebnisse haben dazu geführt, eine Art Verzeichnisliste zu erstellen und dann die Datei auszuwählen. Leider ist dies auf einer Netzwerkfreigabe nicht möglich. Fürs Erste habe ich eine Arbeit, indem ich eine kleine App in C# schreibe, die aus dem Skript heraus aufgerufen wird. Wenn die App glaubt, dass ein Update notwendig ist, wird sie mit einem Fehler beendet und ich aktualisiere das Skript, wenn die App mit einem Fehlercode beendet wird. Ich möchte diese Abhängigkeit entfernen.

Antwort

0

Hardcode eine Versionsnummer (zweite Zeile hier). Holen Sie sich die Serverversion und die lokale Version und vergleichen Sie sie. Wenn die Versionsnummern unterschiedlich sind, kopieren Sie die Datei vom Server und starten Sie sie neu.

@echo off 
REM version=5.1 
for /f "tokens=2 delims==" %%a in ('findstr /b /c:"REM version=" "\\Sids\Awesome\Network\%~nx0"') do set sv=%%a 
for /f "tokens=2 delims==" %%a in ('findstr /b /c:"REM version=" "%~f0"') do set lv=%%a 
echo Server: %sv% 
echo Local: %lv% 
if "%sv%" == "%lv%" goto :continue 
echo updating... 
(xcopy /y "\\Sids\Awesome\Network\%~nx0" >nul || goto :eof) & "%~f0" 
[should never arive at this line] 
:continue 
echo current version. 

können Sie die >nul weglassen, wenn Sie die „1 Datei (en) kopiert“ -Meldung sehen wollen.

+0

Sie müssen '/ C:' vor die Suchzeichenfolge 'findstr' setzen, um nicht zwei Suchzeichenfolgen' REM' und 'version =' ... – aschipfl

+0

zu verwenden, Sie können das Wort 'might' weglassen - Ich habe mit 'find' gearbeitet, bis ich bemerkte, dass ich das'/b' benötige und das '/ c' vergessen habe, als ich zu' findstr' wechselte. (funktioniert, weil das die einzige 'REM'-Zeile im Code war) – Stephan