Jestli se jako já chystáte pustit přes svátky nějakou dávku a bojíte se výpadků proudu nebo náhodných pádů počítače, nabízím jednoduchou utilitku. Program pouští dávku a zapisuje si řádku, na které skončil. Po násilném ukončení a znovuspuštění program skočí na poslední řádku. Program si také uchovává vlastnosti dávky ve Windows, tzn. můžete za aktuální řádku připsat další řádky a oni se provedou i když program už běží. (Trochu vepřové, ale nadmíru užitečné.) Připomínky, vylepšení a stížnosti pochopitelně vítám.
Tu je skript v pythonu "batcher.py":
import sys import os def writeState(fname, state): f = open(fname, "w") f.write("%d\n" % state) f.close() if not len(sys.argv) == 3: print print "Error: Batcher needs two arguments." print else: fnameBatch = sys.argv[1] fnameState = sys.argv[2] while True: try: fState = open(fnameState) line = fState.readline() state = int(line.strip()) fState.close() except IOError: state = 0 writeState(fnameState, state) fBatch = open(fnameBatch) iLine = 0 for line in fBatch: if iLine == state: break iLine = iLine + 1 if not state == iLine: break if not os.system(line.strip()) == 0: print print "Warning: An error has occurred at line no. %d." % (state + 1) print state = state + 1 writeState(fnameState, state)
Skript má dva parametry: jméno souboru s dávkou a jméno souboru s číslem aktuální řádky. Pokud druhý soubor neexistuje, jede se od první (nulté) řádky.