mtm
Goto Top

Word Dateien nach Vorlage suchen

Wir haben hier in der Firma demnächst wieder eine Änderung der Dokumentenvorlagen. Im gleichen Zug wollen wir die Anzahl von 130 auf ca. 40 zurückschrauben. Das Problem ist nun rauszufinden, welche Vorlagen wirklich benutzt werden. Die Dateien liegen lokal bei jedem User unter D:\DokVorlagen (als Beispiel) und da in den entsprechenden Ordnern (Intern / Extern / Abteilung). Wir können daher (weil lokal) nicht scannen, wann welche Datei das letzte mal genutzt wurde bzw. ob es überhaupt noch genutzt wird.

Die derzeit einzige Möglichkeit die mir eingefallen ist: Scannen der Abteilungs- / User- / Ablagelaufwerke (am Wochenende) nach .doc Dateien. Ist es möglich zu sehen, welche Dateien aus welcher Vorlage erzeugt wurden und gibt es Tools / Scripte dafür? Dann könnte man eine Nutzungsstatistik erstellen und danach aussortieren. Hat sowas schonmal wer gemacht?

Für jeden andere Idee bin ich im übrigen auch dankbar...

Content-Key: 17233

Url: https://administrator.de/contentid/17233

Printed on: April 25, 2024 at 16:04 o'clock

Mitglied: 16640
16640 Oct 05, 2005 at 12:06:07 (UTC)
Goto Top
Wenn ihr die lokalen Pfade kennt, dann bau doch in das Loginscript ein DIR auf diese Pfade ein mit einer Umleitung in eine Textdatei auf dem Server.

Und alternativ: warum gehst Du nicht über die administrativen Freigaben auf die Clientrechner zum Scannen der Vorlagen?


hand/dba
Member: MTM
MTM Oct 05, 2005 at 12:14:00 (UTC)
Goto Top
Weil es 2500 Clientrechner sind, das wäre mir händisch zuviel Arbeit. Auch eine Auswertung der DIR Befehle wäre arg umfangreich, aber eine erste Idee, danke.
Member: Swissler
Swissler Oct 05, 2005 at 12:33:10 (UTC)
Goto Top
Warum um Gottes Willen sind bei 2500 Rechner die Vorlagen lokal ?????????

Ich würde das so schnell als möglich ändern, z. B. über Logon-Scripts o. ä. Dann hast Du nachher wenigsten Ruhe.

greets
Member: MTM
MTM Oct 05, 2005 at 12:38:50 (UTC)
Goto Top
Ja, leider. Ich habe das Gebiet übernommen und bisher wurde es so gemacht. Deswegen will ich auch die Anzahl jetzt mal reduzieren. Es wurde irgendwann mal beschlossen, dass die lokal liegen und damit ist's dann gut. Verteilung usw. ist kein Thema (diverse Methoden, je nachdem ob WinXP, Citrix, Laptop usw.), aber lokal ist erstmal gegeben. Frag mich nicht warum.

Ändern kann ich es erstmal nicht auf die Schnelle, das würde hier im Haus ewig dauern. Aber langfristig bestimmt mein Ziel, ja face-smile
Member: Swissler
Swissler Oct 05, 2005 at 12:49:30 (UTC)
Goto Top
Mein Beileid!

Versuch mal Treesize (http://www.jam-software.de/treesize/) ), vielleicht hilft Dir das Tool weiter. Du kannst damit auch auf jeden PC (über Admin-Shares), aber ist trotzdem Knochenarbeit.
Mitglied: 8644
8644 Oct 05, 2005 at 13:11:24 (UTC)
Goto Top
Hi,

ich hab da mal ein bisschen probiert (Delphi). Mit etwas Zeit, kriege ich da was hin.
Ich könnte auf die Schnelle eine Textdatei zaubern, die du dann in Excel auswerten kannst.
Falls Interesse besteht, gib mal Bescheid!

Psycho
Member: MTM
MTM Oct 05, 2005 at 13:14:12 (UTC)
Goto Top
Kannst du auch den Dateinamen der Vorlagedatei auslesen (wird von Word gespeichert)? Dann wäre es eine echte Hilfe.
Mitglied: 8644
8644 Oct 05, 2005 at 13:18:58 (UTC)
Goto Top
So ungefähr würde es aussehen

D:\Dokumente\xyz.doc;Template: c:\Vorlagen\normal.dot

Man kann da auch noch mehr Infos raus holen (letzte Änderung usw.)

Ich denke mal, dass ich das bis morgen hin bekommen könnte.

Psycho
Member: MTM
MTM Oct 05, 2005 at 13:23:07 (UTC)
Goto Top
Ideal wäre folgendes:

Pfad inkl. Dateiname;Vorlage;letzte Änderung (TT.MM.JJJJ)

Wenn du das hinkriegen könntest, wäre das doch eine arge Hilfe für mich.
Mitglied: 8644
8644 Oct 05, 2005 at 13:56:59 (UTC)
Goto Top
ein paar Fragen noch:

->Ich würde alle lokalen Platten scannen?
->Soll das Proggi automatisch loslegen?
->Gibt es ein gemapptes Laufwerk für alle?

Dann könnte es so gehen: Progi in jenes LW legen und per Richtlinie( ist nicht mein Fach) starten. Für jeden Rechner eine Datei erstellen bzw. alles in eine schmeißen (ich weiß ja nicht wie viele das werden!) Die einträge per ";" trennen, damit kommt Excel dann klar.

Das Proggi an sich geht schon, muß nur noch ein paar Feinheiten ändern!

Psycho
Member: Biber
Biber Oct 05, 2005 at 20:17:35 (UTC)
Goto Top
Moin MTM,

wenns mal etwas länger dauert....

bzw. bis Psycho was Professionelles hat, hab ich solange einen Batch-Oneliner für Dich:
(ist alles in einer Zeile!)
--------snipp ListAllDocNDots.bat
@echo off & for /r E:\ %%i in (*.doc) do for /f %%a in ('type "%%i"^|find /i ".DOT"') do if errorlevel 0 echo %%~i;%%a;%%~ti  
----------snapp ListAllDocNDots.bat

Ausgabe bei mir:

E:\Microsoft\rk\W2KSupporttools\ldp.doc;Normal.dot;28.05.2001 23:05
E:\Microsoft\rk\W2KSupporttools\dskprtrb.doc;Normal.dot;28.05.2001 23:00
E:\Microsoft\rk\W2KSupporttools\dommig.doc;Normal.dot;20.03.2002 06:39
E:\Microsoft\rk\W2KSupporttools\dommig.doc;Windows;20.03.2002 06:39
E:\Microsoft\rk\W2KSupporttools\sreadme.doc;Normal.dot;19.04.2002 15:41
E:\Microsoft\rk\W2KSupporttools\iadstools.doc;Normal.dot;28.05.2001 23:06
E:\jokes\Windows_fehlermeldungen.doc;Normal.dot;30.08.2005 15:58
E:\jokes\revengeo.doc;Normal.dot;22.08.2005 10:38
....

einige Word-*docs haben mehrere Vorlagen, deshalb die innere FOR-Schleife.
(siehe die dommig.doc oben)

HTH
Frank / der Biber aus Bremen
Mitglied: 8644
8644 Oct 06, 2005 at 05:11:04 (UTC)
Goto Top
Guten Morgen,

wenns mal etwas länger dauert....

... man hat ja noch andere Vepflichtungen! face-wink

Ich wäre dann aber auch soweit!
Das Proggi speichert die Ausgabe im Programmverzeichnis unter [Computername].csv
Es legt beim Start sofort los und beendet sich wieder, der User merkt kaum was - es geht recht schnell.

Falls Interesse besteht; PN mit Mail-Addi an mich und ab gehts.

Psycho
Member: MTM
MTM Oct 06, 2005 at 05:46:22 (UTC)
Goto Top
Am idealsten per Parameter, also Programm.exe <Pfad> <Logdatei>

Die Logdatei wird per Append geöffnet, notfalls lösch ich sie von Hand vorher.

Kommst du bei Pfad auch mit \\Server\Volume klar oder muss es gemappt sein?
Mitglied: 8644
8644 Oct 06, 2005 at 05:52:36 (UTC)
Goto Top
Gib mir mal deine Mail-Adresse durch, dann schicke ich dir was zum testen.
Ist dann einfacher, für mich, deine Wünsche einzubauen!

Psycho
Mitglied: 8644
8644 Oct 10, 2005 at 08:04:00 (UTC)
Goto Top
Guten Morgen,

auf Wunsch der Batch-Fraktion stelle ich mal vor, wie sowas unter Delphi aussehen könnte:

function GetFileProperty(const FileName: WideString): string;
var
i : Integer;
PropSetStg : IPropertySetStorage;
PropSpec : array[2..19] of TPropSpec;
PropStg : IPropertyStorage;
PropVariant : array[2..19] of TPropVariant;
Rslt : HResult;
S : string;
Stg : IStorage;
begin
Result := '';
try
OleCheck(StgOpenStorage(PWideChar(FileName), nil, STGM_READ or
STGM_SHARE_DENY_WRITE,
nil, 0, Stg));
PropSetStg := Stg as IPropertySetStorage;
OleCheck(PropSetStg.Open(FmtID_SummaryInformation,
STGM_READ or STGM_SHARE_EXCLUSIVE, PropStg));
for I := 2 to 19 do
begin
PropSpec[I].ulKind := PRSPEC_PROPID;
PropSpec[I].PropID := I;
end;
Rslt := PropStg.ReadMultiple(18, @propspec, @propvariant);
OleCheck(Rslt);
if Rslt <> S_FALSE then for I := 2 to 19 do
begin
S := '';
if PropVariant[I].vt = VT_LPSTR then
if Assigned(PropVariant[I].pszVal) then
S := PropVariant[I].pszVal;
case I of
2: S := Format('Title: %s', [S]);
3: S := Format('Subject: %s', [S]);
4: S := Format('Author: %s', [S]);
5: S := Format('Keywords: %s', [S]);
6: S := Format('Comments: %s', [S]);
7: Begin
S := Format(';%s', [S]);
Result := S;
End;
8: S := Format('Last saved by: %s', [S]);
9: S := Format('Revision number: %s', [S]);
10: S := Format('Total editing time: %g sec',
[Comp(PropVariant[I].filetime) / 1.0E9]);
11: S := Format('Last printed: %s',
[FileTimeToDateTimeStr(PropVariant[I].filetime)]);
12: S := Format('Create time/date: %s',
[FileTimeToDateTimeStr(PropVariant[I].filetime)]);
13: Begin
S := Format(';%s',
[FileTimeToDateTimeStr(PropVariant[I].filetime)]);
result := result + S;
End;
14: S := Format('Number of pages: %d', [PropVariant[I].lVal]);
15: S := Format('Number of words: %d', [PropVariant[I].lVal]);
16: S := Format('Number of characters: %d',
[PropVariant[I].lVal]);
17:; // thumbnail
18: S := Format('Name of creating application: %s', [S]);
19: S := Format('Security: %.8x', [PropVariant[I].lVal]);
end;

end;
finally
end;
end;

procedure GetAllFiles(mask: string);
var
search : TSearchRec;
directory : string;
property : String;
sl : TStringList;
i : Integer;
begin
sl := TStringList.Create;
directory := ExtractFilePath(mask);

find all files
if FindFirst(mask, $23, search) = 0 then
begin
repeat
Try
property := GetDocInfo(directory + search.Name);
Except
property := ';;';
End;
sl.Add(directory + search.Name + property);
until FindNext(search) <> 0;
end;
if FindFirst(directory + '*.*', faDirectory, search) = 0 then
begin
repeat
if ((search.Attr and faDirectory) = faDirectory) and (search.Name[1] <> '.') then
GetAllFiles(directory + search.Name + '\' + ExtractFileName(mask));
until FindNext(search) <> 0;
FindClose(search);
end;
sl.SaveToFile(ausgabe);
sl.Destroy;
end;

Mein Dank geht hierbei auch an eine sehr gute Delphi-Seite : http://www.delphi-tipps.de

Psycho
Member: Biber
Biber Oct 10, 2005 at 08:08:47 (UTC)
Goto Top
Die Batch-Fraktion dankt!

Biber, 2. Stellvertretender Sprecher und Alterspräsident