čtvrtek 22. prosince 2011

Pouštěč dávek

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.

Žádné komentáře: