Stell Dir weiterhin vor, es seien Dateien verteilt worden, die ein Starten der Software durch Anwender verhindern.
Stell Dir vor, dies läge an dem Server, mit dem die Dateien verteilt werden und keiner kann Dir sagen, welche Standorte betroffen sind.
Manuelles Durchprobieren aller Standorte würde zu lange dauern, das liegt auf der Hand.
Wenn alle sich telefonisch bei Dir melden und du die Anrufe bearbeiten mußt, dauert es ebenfalls zu lange.
Ein Skript muß her!
Aber, o weia, es handelt sich um Windows und UNC-Pfade lassen sich nicht mit Batch-Dateien bearbeiten. Also:
Python ist gefragt:
Code: Alles auswählen
import os
infile = open('servers.txt', 'r')
outfile = open('status.txt', 'w')
for server in infile:
server = server.strip()
try:
if server[-3] == '-':
# Dateien liegen auf Fileserver
path = r'\\%s\WORK\Allgemein\Prestige\Import' % server
else:
# Dateien liegen direkt auf dem Terminal-Server
path = r'\\%s\ProgramFiles$\Prestige\Import' % server
imports = os.listdir(path)
if len(imports) == 1:
# Nur return.log
status = 'clean'
else:
status = 'Importe liegen vor.'
outfile.write('%s;%s\n' % (server, status))
print ('%s;%s\n' % (server, status))
except WindowsError:
print 'Pfad existiert nicht: %s' % path
outfile.close()
infile.close()
print "Alles durchgelaufen"
sondern nur ein Verzeichnis mit ICA-Dateien, die die Namen der Standorte beinhalten:
Code: Alles auswählen
import os
dir = os.listdir(r"W:\Work\Speicherort\")
outfile = open(r"C:\tmp\servers.txt", 'w')
for i in dir:
outfile.write('%s\n' % i[:15])
Und es stellt sich kurze Zeit später heraus, daß die Dateien dann auch gelöscht werden sollen. Einige Tests später:
Code: Alles auswählen
import os
infile = open('servers.txt', 'r')
outfile = open('status.txt', 'w', 0)
for server in infile:
server = server.strip()
try:
if server[-3] == '-':
path = r'\\%s\WORK\Allgemein\Prestige\Import' % server
else:
path = r'\\%s\ProgramFiles$\Prestige\Import' % server
imports = os.listdir(path)
if len(imports) <= 1:
# Nur return.log
status = 'clean'
else:
for filename in imports:
if filename.lower()[-3] == 'p':
# Passt auf *.p??
print "Removing %s" % os.path.join(path, filename)
os.remove(os.path.join(path, filename))
status = 'cleaned'
outfile.write('%s;%s\n' % (server, status))
print ('%s;%s\n' % (server, status))
except WindowsError:
print 'Pfad existiert nicht: %s' % path
outfile.close()
infile.close()
print "Alles durchgelaufen"
aber das hätte bestimmt noch eine halbe Stunde länger gedauert; in dieser Zeit war mein Skript schon längst durchgelaufen (ich hatte vorher ja nur 37 Treffer ermittelt, nicht 130).
Danke Python!