Ich habe ein Batch-Skript, um die neuesten Revisionsdateien von einem SVN herunterziehen, die beim Windows-Start (mit lokalen Gruppenrichtlinieneditor konfiguriert) ausgeführt wird. HierBatch-Skript beim Start nicht abgeschlossen
ist der Code für das Skript:
@echo off
if "%1"=="" (
set LIBPATH=C:\ALTIUM_WORK\00001_MCHP-CDB\parts\Library
) else (
set LIBPATH=%1
)
svn cleanup %LIBPATH%
set DATETIME=%DATE:~4,2%/%DATE:~7,2%/%DATE:~10,4% %TIME:~0,2%:%TIME:~3,2%:%TIME:~6,2%
echo %DATETIME%>mcl_update.log
svn up %LIBPATH%>>mcl_update.log
if ERRORLEVEL 1 goto ERRHANDLER
Exit
:ERRHANDLER
<Insert error message here>
Wenn ich dieses Skript mit einem Doppelklick auf die .bat, erhalte ich die folgende Ausgabe in mcl_update.log:
02/14/2017 16:13:50
Updating 'C:\ALTIUM_WORK\00001_MCHP-CDB\parts\Library':
At revision 5800.
Diese ist, was ich erwarte, aber wenn das Skript beim Start ausgeführt wird, wird die letzte Zeile weggelassen. Es auffüllt mcl_update.log mit diesem:
02/14/2017 16:16:07
Updating 'C:\ALTIUM_WORK\00001_MCHP-CDB\parts\Library':
Die zweite Zeile Teil der Ausgabe von svn
ist, so scheint es, wie der Befehl beginnt, aber einfach nie endet. Ich weiß nicht, warum das so ist. Hat jemand irgendwelche Ideen?
Danke!
-Sean
Ein neu entdeckte wenig Info: Nach dem Start, wenn ich versuche, die Protokolldatei zu löschen, die erzeugt wird, von Windows einen Fehler wirft die besagt, dass „Die Aktion kann nicht, weil die Datei abgeschlossen werden ist in cmd.exe geöffnet ".
Ist es möglich, dass dies ein Domain-Problem sein könnte? Die Verbindung zum Netzwerk meines Unternehmens ist noch nicht hergestellt, so dass der Befehl svn
gerade hängt?
'Aktualisieren 'C: \ ALTIUM_WORK \ 00001_MCHP-CDB \ Teile \ Bibliothek':' ist jedoch der erste Teil der 'svn' Ausgabe. Es scheint nie den Befehl zu vervollständigen. Genau wie eine Überprüfung der Gesundheit, habe ich zuerst eine 'CD' zu' svn' Pfad hinzufügen, aber die Ausgabe ist das gleiche. Es sei denn, ich brauche einen expliziten Pfad beim Aufruf von 'svn'. – detroitwilly
Wenn Sie vermuten, dass es sich um ein Timing-Problem handelt, wird möglicherweise ein 'timeout/t 90> nul' vor dem ersten' svn' eingefügt. Ansonsten würde ich nach dem zweiten (problematischen) 'svn' eine' Pause' hinzufügen und die Umleitung entfernen. Ich vermute, dass 'svn' auf Eingabe wartet und möglicherweise auf' stderr' berichtet, so dass die Eingabeaufforderung für die Umleitung nicht auf 'stdout' erscheint. Es ist interessant, dass das erste 'svn' zu vervollständigen scheint. '2> & 1' sollte stderr und stdout in die Datei mit Ihren aktuellen Redirectors umleiten (aber das hilft nicht bei Eingaben, auf die' svn' möglicherweise wartet) – Magoo