Czy są jakieś programiki, które potrafią czyścić te pliki tymczasowe?
Oczywiście z konta z uprawnieniami do kasowania na dysku sieciowym.
Leszek
Nie ma. Excel potrzebuje ich w trakcie zapisu jako fazy przejściowej -
najpierw pisze do niego i jeśli zapis się powiedzie, kasuje oryginalny plik
i zmienia nazwę tymczasowego na oryginalny.
> b) jeśli już musi je tworzyć, to niech to robi na dysku lokalnym, a nie
> sieciowym,
Niestety, lokalizacja plików tymczasowych (nie mylić z Autorecover) jest
zahardkodowana w Excelu.
> Czy są jakieś programiki, które potrafią czyścić te pliki tymczasowe?
> Oczywiście z konta z uprawnieniami do kasowania na dysku sieciowym.
To chyba najlepsza opcja, może coś wygooglasz.
Nie znam dobrze systemu uprawnień Windows, ale może można definiować
uprawnienia z wykorzystaniem masek? Wystarczyłoby zezwolić na kasowanie
plików z pustym rozszerzeniem, to wprawdzie pewne uproszczenie, ale chyba do
przełknięcia.
A w jaki sposob to ustawiles? Bo jesli dysk jest tylko do odczytu, to nie
moze tez zapisac tak plikow tymczasowych.....
Pozdrawiam
Michal
Jest więcej poziomów uprawnień niż RO/RW - u mnie to widać we właściwościach
dowolnego folderu w Security > Advanced > Permissions > Edit. Pewnie nadał
prawo do tworzenia, a do kasowania nie.
Dokładnie tak. Ja sam tego nie ustawiałem, tylko admin w firmie dla której
tworzę arkusze i trochę kodu VBA. Jest wydzielony osobny dysk sieciowy dla
tych plików xls. No i teraz najważniejsze:
chcą zabezpieczyć się przed skasowaniem (umyślnym lub przypadkowym) plików
na tym dysku.
Na razie wprowadzono to na poziomie użytkowników - tylko jeden użytkownik ma
prawo kasować tam pliki. Tworzyć mogą wszyscy - zresztą jest mi to
niezbędne, bo sam program tworzy sam sporo plików (nie kasuje niczego).
Może macie jakiś inny pomysł na zabezpieczenie plików przed skasowaniem? Bo
niestety natknąłem się na te nieszczęsne pliki tymczasowe. Ręczne ich
usuwanie nie jest do zaakceptowania, tym bardziej że program na podstawie
ilości plików w jednym z podfolderów generuje następne numery powstających
dokumentów.
Leszek
Na moje oko to jednak trzeba rozwiazac nie technicznie, ale
organizacyjnie... Razem z kopia zapasowa nie powinno sprawiac specjalnie
problemu...
U ciebie wyglada to troche na przerost IT nad wymagana funkcjonalnoscia...
mozna potworzyc foldery i dac proste uprawnienia na poziomie folderow...
Proste do administracji, jasne tez sa zasady dostepu i odpowiedzialnosci...
a tak - wyglada na przekombinowane...
Ale jesli chcesz mocniej przekombinowac - to jesli uzywasz Exchange'a to
mozesz taka funcjonalnosc osiagnac w Microsoft Exchange + Outlook - tam nie
bedziesz mial problemow plikow tymczasowych :)
Pozdrawiam
Michal
Jesli nie znajdziesz narzedzia do porzadkowania dyskow rozpoznajacego takie
pliki, to moze kogos z podstawowa znajomoscia chociazby VBS - taki skrypt
napisze nawet poczatkujacy programista w 10 minut. Skrypt podpinasz do
Harmonogramu Zadan Windows i odpalasz np. co godzine z konta z
uprawnieniami. Moze nawet skrypt jest lepszy, bo narzedzie musialoby jeszcze
umiec dzialac w trybie wsadowym.
Niech tam, w ramach szkolki niedzielnej napisalem to co ponizej. Ustaw
zmienna "katalog" na jakis testowy katalog, zapisz z rozszerzeniem vbs i
sprobuj uruchomic. Skrypt powinien skasowac wszystkie pliki o 8-znakowych
nazwach, nie posiadajacych rozszerzenia, z wyjatkiem bedacych w uzyciu.
Jesli sie sprawdzi, podepnij pod scheduler.
Docelowo postaralbym sie o porzadny skrypt. Mojego nie pokazuj zadnemu
prawdziwemu programiscie ;)
Function kasuj
StartTime = Timer
'On Error Resume Next
Dim fso, folder, objFolderContents, fullname, filename, c, f1
Set fso = CreateObject("Scripting.FileSystemObject")
katalog="D:\Documents and Settings\xxx\Desktop\test"
Set folder = fso.GetFolder(katalog)
Set objFolderContents = folder.Files
For Each fullname in objFolderContents
For c = Len(fullname) to 1 Step -1
If mid(fullname, c, 1)="\" Then Exit For
Next
filename = mid(fullname, c + 1)
dot = InstrRev(filename, ".")
'wscript.echo filename, len(filename), dot
If len(filename) = 8 and dot = 0 Then
'wscript.echo "Kasuje ", filename, dot
Set f1 = fso.GetFile(fullname)
fso.DeleteFile(fullname)
End If
Set f1 = nothing
Next
End Function
kasuj
Leszek