Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Dateien umbenennen und verschieben mit VBS

Frage Entwicklung VB for Applications

Mitglied: joni2000de

joni2000de (Level 1) - Jetzt verbinden

22.07.2010, aktualisiert 18.10.2012, 7699 Aufrufe, 18 Kommentare

Hallo Admins,

ich habe beim folgenden Script noch ein paar Problemchen, bei denen ich auf Hilfe hoffe.

01.
'P F A D E   A N F A N G ============================================================================================================= 
02.
 
03.
quelle = "E:\Scanordner\"			'Pfad inkl. \ 
04.
ziel = "E:\Objekte\" 
05.
zielpfad = "\11_laufende_Buchhaltung\Rechnungen\Eingangsrechnungen\"	'Pfadteil nach der Objektnummer - Beginn und Ende mit \									'Pfad inkl. \ 
06.
 
07.
'P F A D E   E N D E ============================================================================================================= 
08.
 
09.
'U S E R N A M E   A U S L E S E N 
10.
Set objNetwork = CreateObject("WScript.Network") 
11.
username = objNetwork.UserName 
12.
'msgbox(Username) 
13.
 
14.
'D A T U M    U N D   Z E I T    F E S T L E G E N    U N D   F O R M A T I E R E N 
15.
DD = Date 
16.
dt = Year(DD) & "-" & Right("0" & Month(DD), 2) & "-" & Right("0" & Day(DD), 2) 
17.
 
18.
ZZ = Time 
19.
zt = Left(ZZ, 2) & "-" & Mid(ZZ, 4, 2) & "-" & Right(ZZ, 2) 
20.
 
21.
'L O G D A T E I   F E S T L E G E N 
22.
logdat = "e:\Scanordner\" & username & "\log_" & dt & "_" & zt & ".txt" 
23.
'msgbox(logdat) 
24.
 
25.
'Q U E L L P F A D   D E S   U S E R S   F E S T L E G E N 
26.
quellpfad = quelle & username & "\" 
27.
'msgbox(quellpfad) 
28.
 
29.
'D A T E I E N   A B F R A G E N 
30.
on error resume next 
31.
set fs = CreateObject("Scripting.FileSystemObject") 
32.
set f = fs.GetFolder(quellpfad) 
33.
Set y = fs.CreateTextFile(logdat, True) 
34.
 
35.
For Each file in f.Files 
36.
 
37.
if right(file.Name, 4) = ".pdf" then							'nur PDFs bearbeiten 
38.
 
39.
	alt = file.Name									'alten Namen speichern 
40.
	'msgbox(alt) 
41.
'Eingabe: 
42.
	onr = InputBox("Objektnummer bitte angeben:", "Objektnummer", onr) 
43.
	rdat = InputBox("Rechnungsdatum bitte angeben (TTMMJJ):", "Rechnungsdatum", rdat) 
44.
	korr = InputBox("Eingaben korrekt?" & vbCrLf & "Objektnummer: " & onr & vbCrLf & "Datum: " & left(rdat, 2) &_ 
45.
	"." & mid(rdat,3,2) & ".20" &right(rdat,2), "Eingabekontrolle", "ja") 
46.
'	if korr <> "ja" or korr <> "j" then goto Eingabe 
47.
	file.Name = onr & " Rechnung vom 20" & right(rdat,2) & mid(rdat,3,2) & left(rdat, 2) & ".pdf" 
48.
	neu = file.Name 
49.
	'msgbox(neu) 
50.
 
51.
	if fs.FileExists(neu) then msgbox("gibt es schon")									'neunen Namen speichern 
52.
 
53.
	if fs.FolderExists(ziel & ONR & zielpfad) then 
54.
		if quellpfad <> ziel & ONR & zielpfad then								'Zielverzeichnis darf nicht gleich Quelle sein 
55.
			file.move (ziel & ONR & zielpfad)						'ins Zielverzeichnis verschieben 
56.
			y.WriteLine(quellpfad & alt & " >>> " & ziel & ONR & zielpfad & neu & " <<< +v+u")		'Wenn der Ordner existiert wurde die Datei verschoben + protokolliert 
57.
		else 
58.
			fs.CreateFolder(quellpfad & "fertig\")						'Ordner erzeugen, da Ziel gleich Quelle 
59.
			file.move (quellpfad & "fertig\")							'in neuen Ordner verschieben 
60.
			y.WriteLine(quellpfad & alt & " >>> " & quellpfad & "fertig\" & neu & " <<< -v+u Quelle gleich Ziel")	'Wenn Ziel gleich Quelle wird nur die Namensänderung protokolliert 
61.
 
62.
		end if 
63.
	else 
64.
		fs.CreateFolder(quellpfad & "fertig\")						'Ordner erzeugen, da Ziel nicht vorhanden ist 
65.
		file.move (quellpfad & "fertig\")							'in neuen Ordner verschieben 
66.
		y.WriteLine(quellpfad & alt & " >>> " & quellpfad & "fertig\" & neu & " <<< -v+u kein Ziel vorhanden")	'Wenn der Ordner nicht existiert wird nur die Namensänderung protokolliert 
67.
	end if 
68.
 
69.
End if 
70.
 
71.
Next 
72.
 
73.
y.Close											'Logdatei schließen
Was klappt noch nicht:
1. Ich würde gerne jeder verschobenen und umbenannten Datei hinten einen Zähler anfügen, der einfach hochzählt.
2. Die Schleife mit der Abfrage ob die Angaben korrekt sind.
3. Das Logfile soll am Schluss automatisch aufgerufen werden.

zu 1.
Im Zielordner sind bereits Dateien vorhanden. Wenn neue dazukommen können diese den gleichen Namen kriegen wie bestehende (abgesehen vom Zähler). D. h. ein fortlaufender Zähler hilft nicht, da bei jeder einzelnen Datei geprüft werden muss ob es diese schon gibt und dann die nächst höhere Zählernummer zu verwenden ist.

zu 2.
Die Schleife mit Eingabe: und Goto will nicht funktionieren (ist nur derzeit ausgeblendet). Wo liegt hier der Denk-/Syntaxfehler?

zu 3.
Wie bringe ich die Datei am Ende auf den Bildschirm?

Danke im Voraus für euer hilfe und Geistesblitze.

Gruß Joni
Mitglied: 76109
22.07.2010 um 21:42 Uhr
Hallo joni2000de!

Mit Ausnahme von "On Error Goto 0", gibt es In VBS keine Goto-Funktion. Alternativ kannst Du aber eine While-Schleife verwenden:

01.
    Do 
02.
        ..... 
03.
        korr = InputBox(....) 
04.
    Loop While LCase(Left(korr, 1)) <> "j"

Gruß Dieter
Bitte warten ..
Mitglied: LotPings
22.07.2010 um 22:12 Uhr
Hallo Dieter,

hab zu lange ferngesehn, aber meine fast fertig gewesene Antwort will ich nicht vorenthalten

@Joni
Formatierungen sind ja großteils eine Frage des persönlichen Geschmacks,
aber teilweise 10 Tabs in Folge sowie die im Internet Bereich übliche Interpretation von fortlaufender Großschrift als SCHREIEN (verstärkt mit gesperrter Schrift als L A U T S C H R E I E N) machen deinen Code - ähem - schlecht lesbar.
Ich, mag mich jedenfalls so, nicht damit beschäftigen.

Gruß
LotPings

@Biber, wir laufen wohl heute zur Hochform auf Aber man nennt doch die Dinger Ohrenschützer - meinen bitte in Pink.
Bitte warten ..
Mitglied: Biber
22.07.2010 um 22:16 Uhr
[OT]

Zitat von LotPings:
Formatierungen sind ja großteils eine Frage des persönlichen Geschmacks,
aber teilweise 10 Tabs in Folge sowie die im Internet Bereich übliche Interpretation von fortlaufender Großschrift als SCHREIEN
(verstärkt mit gesperrter Schrift als L A U T S C H R E I E N) machen deinen Code - ähem - schlecht lesbar.
Ich, mag mich jedenfalls so, nicht damit beschäftigen.
Hmmm, ich spiele eh mit dem Gedanken, vielleicht einen Kopfhörer-Verleih aufzumachen...
...evtl in Kombination mit stark getönten Sonnenbrillen...

Würde das helfen?

Grüße
Biber
[/OT]
Bitte warten ..
Mitglied: 76109
22.07.2010 um 23:12 Uhr
[OT]

Hallo LotPings und Biber!

Also, am Beitrag selbst kann ich kein ungebührliches Verhalten erkennen und wenn's im Code mit der Schreibung etwas übertrieben erscheint, ähem keine Ahnung, ob ich das jetzt negativ bewerten soll. Ist mir auch ehrlich gesagt erst im Nachhinein aufgefallen und Ohrenstöpsel (grün), habe ich ne Schüssel voll

Gruß Dieter

[/OT]
Bitte warten ..
Mitglied: bastla
22.07.2010 um 23:55 Uhr
Hallo joni2000de!

Den Vorbehalten hinsichtlich der Formatierung schließe ich mich an (wie sieht denn das aus, wenn's derart in die Breite geht - obwohl ich einräume, dass auch die Tatsache, dass ein TAB durch die Forensoftware in der Breite von 8 Leerzeichen dargestellt wird, ihren Teil zu diesem Erscheinungsbild beiträgt) ...
Für 3. sollte
CreateObject("WScript.Shell").Run logdat
genügen.

Grüße
bastla

P.S.: Ohrenstöpsel brauche ich nicht - habe defaultmäßig auf Durchzug gestellt ...
Bitte warten ..
Mitglied: joni2000de
23.07.2010 um 09:13 Uhr
Guten Morgen die Herren!

vorerst danke an alle!
=> Dieter und bastla für die Hilfe bei meinem Problem
=> der Rest für die kreativen Ausführungen zum Thema
"Mein Lieber Lord Boyet, obwohl meine Schönheit nur durchschnittlich ist benötigt Sie nicht die Ausschmückung eures Lobgesangs, denn Schönheit liegt im Auge des Betrachters und muss nicht durch die Zunge des Hausierers angepriesen werden." - Love's Labours Lost, 1588 / Die Prinzessin von Frankreich

(Original engl. "Good Lord Boyet, my beauty, though but mean, Needs not the painted flourish of your praise: Beauty is bought by iudgement of the eye, Not uttred by base sale of chapmens tongues")

edit/ Hab noch vergessen den Schöpfer des obigen Zitates anzuführen: William Shakespeare

2. und 3. sind somit gelöst.
Hat jemand noch für 1. eine Idee.

Gruß Joni
Bitte warten ..
Mitglied: joni2000de
23.07.2010 um 09:50 Uhr
Hallo bastla,

da ist noch eine Frage aufgetaucht.

Wie kann ich die Logdatei die ich mit

01.
CreateObject("WScript.Shell").Run logdat
erzeugt habe wieder schließen. Zum Zeitpunkt an dem die Datei geschlossen werden soll ist sie nicht aktiv => SendKeys funktioniert somit nicht.

Danke

Gruß Joni
Bitte warten ..
Mitglied: LotPings
23.07.2010 um 12:16 Uhr
Hallo Joni,

wie willst du die Versionsnummer denn anhängen, einfach ohne Trenner, mit fester Stellenzahl, in Klammern etc.?

Gruß
LotPings

@Biber, immerhin sind wir noch im Kontext der ersten Frage - und meine Gegenfragen sollten zum Denken anregen.
Wessen essen.. ich hab gerade erst kalt gefrühstückt; obwohl der Kaffe war schon heiss
Bitte warten ..
Mitglied: Biber
23.07.2010 um 12:19 Uhr
[OT]
Zitat von LotPings:
wie willst du die Versionsnummer denn anhängen, einfach ohne Trenner, mit fester Stellenzahl, in Klammern etc.?
Und wenn er auf diese Suggestivfrage mit "Gerne!" antwortet, dann ufert das wieder aus..
[/OT]

@LotPings, "zum Denken anregen" finde ich gut.... aber nicht, dass dann wieder das Essen kalt wird...
Bitte warten ..
Mitglied: joni2000de
23.07.2010 um 12:43 Uhr
Hi,

ich hätte da an die Variante Text_01.pdf, Text_02.pdf,... gedacht.

2 Stellen reichen, da pro Objekt und pro Tage sicher nicht mehr als 99 Rechnungen einlagen werden.

Bevor die Nummerierung festgelegt wird muss geprüft werden ob bereits eine Datei mit dem gleichen Namen (ohne lfd. Nummer) vorhanden ist.
z. B. vergleiche den Namen ohne die letzten 7 Stellen

Wenn dann ein Treffer gefunden wird, muss die lfd. Nr. des Treffers ermittelt werden.
Dann muss geprüft werden ob es noch einen Treffer gibt und wenn ja welche lfd. Nr. der hat. Die höhere der beiden ist zu übernehmen.
Das solange bis keine Treffer mehr vorhanden sind.
Die neue Datei erhält dann die lfd. Nr. +1

Die Dateizusammenstellung kann zB so aussehen:

Rechnung vom 20100819_01.pdf
Rechnung vom 20100819_02.pdf
Rechnung vom 20100820_01.pdf
Rechnung vom 20100821_01.pdf
Rechnung vom 20100821_02.pdf
Rechnung vom 20100821_03.pdf

Und dann kommt eine neue "Rechnung vom 20100820" die dann die Nummer _02 erhalten müsste.

Bitte Gerne

Gruß Joni
Bitte warten ..
Mitglied: LotPings
23.07.2010, aktualisiert 18.10.2012
Das passt ja ziemlich genau auf eine rekursive Funktion die ich hier in Batch realisiert habe, hatte ich auch schon einmal in vbs geschrieben - finde ich aber gerade nicht (muss wirklich mal einen Hausputz machen )

Aber vielleicht schaust du dir den Code mal an und versuchst es selber als vbscript zu schreiben.

Gruß
LotPings
Bitte warten ..
Mitglied: joni2000de
23.07.2010 um 14:25 Uhr
Hi LotPings,

ich kann deinem Code so ungefähr folgen, doch das in vbs übersetzten, daraus wird wohl nix
Dazu bin ich zu dünn unterwegs. Falls dein Hausputz erfolgreich ist, würde mir das weiterhelfen.

Entgegen dem Beispiel muss bei mir die Nummerierung aber nicht "nach hinten verschoben" werden, sondern es reicht wenn einfach die nächste Nummer verwendet wird.

Gruß Joni
Bitte warten ..
Mitglied: 76109
23.07.2010 um 15:10 Uhr
Hallo joni2000de!

Hier mal ein Beispiel zum Verschieben einer Datei mit Zähler, wobei es wenig Sinn macht, die Datei erst umzubenennen und dann erst zu prüfen, ob die Datei bereits existiert... D.h. nach der neuen Namensbildung anhand einer Zählerschleife ermitteln, ob die Datei im Zielpfad schon existiert. Wenn nicht, dann wird der neue Dateinamen gebildet und unter dem neuen Dateinamen verschoben.

01.
Const Quellpfad = "E:\Quelle\" 
02.
 
03.
Const Zielpfad = "E:\Ziel\" 
04.
 
05.
Dim Fso, File, ZielName, FilePfad, i 
06.
     
07.
Set   Fso = CreateObject("Scripting.FileSystemObject") 
08.
     
09.
For Each File In Fso.GetFolder(Quellpfad).Files 
10.
     
11.
    If LCase(Fso.GetExtensionName(File.Name)) = "pdf" Then 
12.
         
13.
       'ZielNamen durch Eingabe bilden .... z.B. 
14.
        ZielName = "123456 Rechnung vom 20100723" 
15.
             
16.
        i = 1  'Zähler = 1 
17.
             
18.
        Do Until Fso.FileExists(Zielpfad & ZielName & "_" & Right("0" & i, 2) & ".pdf") = False: i = i + 1:  Loop 
19.
         
20.
       'Zielpfad mit neuem Dateinamen 
21.
        FilePfad = Zielpfad & ZielName & "_" & Right("0" & i, 2) & ".pdf" 
22.
             
23.
        File.Move FilePfad 
24.
    End If 
25.
Next
Gruß Dieter
Bitte warten ..
Mitglied: joni2000de
23.07.2010 um 16:00 Uhr
Hallo Dieter,

dein Vorschlag hat funktioniert. Danke!

Somit wäre 1. - 3. erledigt und nur noch die Zusatzfrage offen, wie ich ein geöffnetes, im hintergrundbefindliches Fenster (habe ich vorher mit dem Script CreateObject("WScript.Shell").Run logdat geöffnet), wieder schließen kann.

Wenn ich da auch noch einen Tipp kriegen könnte, wäre mein Wochenende gerettet.

Gruß Joni
Bitte warten ..
Mitglied: joni2000de
23.07.2010 um 17:30 Uhr
Hallo zusammen,

hier mein Ergebnis, für alle die es trotz der Formatierungsschwächen interessiert

Zusätzlich wird jetzt immer die zu benennende Datei mit geöffent und wieder geschlossen.

01.
'P F A D E   A N F A N G ============================================================================================================= 
02.
 
03.
quelle = "E:\Scanordner\"			'Pfad inkl. \ 
04.
ziel = "E:\Objekte\"				'Pfad inkl. \ 
05.
zielpfad = "\11_laufende_Buchhaltung\Rechnungen\Eingangsrechnungen\"	'Pfadteil nach der Objektnummer - Beginn und Ende mit \ 
06.
 
07.
'P F A D E   E N D E ============================================================================================================= 
08.
 
09.
'U S E R N A M E   A U S L E S E N 
10.
Set objNetwork = CreateObject("WScript.Network") 
11.
username = objNetwork.UserName 
12.
'msgbox(Username) 
13.
 
14.
'D A T U M    U N D   Z E I T    F E S T L E G E N    U N D   F O R M A T I E R E N 
15.
DD = Date 
16.
dt = Year(DD) & "-" & Right("0" & Month(DD), 2) & "-" & Right("0" & Day(DD), 2) 
17.
 
18.
ZZ = Time 
19.
zt = Left(ZZ, 2) & "-" & Mid(ZZ, 4, 2) & "-" & Right(ZZ, 2) 
20.
 
21.
'L O G D A T E I   F E S T L E G E N 
22.
logdat = "e:\Scanordner\" & username & "\log_" & dt & "_" & zt & ".txt" 
23.
'msgbox(logdat) 
24.
 
25.
'Q U E L L P F A D   D E S   U S E R S   F E S T L E G E N 
26.
quellpfad = quelle & username & "\" 
27.
'msgbox(quellpfad) 
28.
 
29.
'D A T E I E N   A B F R A G E N 
30.
on error resume next 
31.
set fs = CreateObject("Scripting.FileSystemObject") 
32.
set f = fs.GetFolder(quellpfad) 
33.
Set y = fs.CreateTextFile(logdat, True) 
34.
 
35.
For Each file in f.Files 
36.
 
37.
if right(file.Name, 4) = ".pdf" then							'nur PDFs bearbeiten 
38.
 
39.
	alt = file.Name									'alten Namen speichern 
40.
	'msgbox(alt) 
41.
	CreateObject("WScript.Shell").Run quellpfad & alt				'PDF zur Info öffnen 
42.
	Set shell = WScript.CreateObject("WScript.Shell")  
43.
 
44.
	Do 
45.
		WScript.Sleep 1000 
46.
		onr = InputBox("Objektnummer bitte angeben:", "Objektnummer", onr) 
47.
		rdat = InputBox("Rechnungsdatum bitte angeben (TTMMJJ):", "Rechnungsdatum", rdat) 
48.
		korr = InputBox("Eingaben korrekt?" & vbCrLf & "Objektnummer: " & onr & vbCrLf & "Datum: " & left(rdat, 2) &_ 
49.
		"." & mid(rdat,3,2) & ".20" &right(rdat,2), "Eingabekontrolle", "ja") 
50.
	Loop While LCase(Left(korr, 1)) <> "j" 
51.
 
52.
	i = 1										'Zähler auf 1 stellen 
53.
	Do Until fs.FileExists(ziel & onr & zielpfad & onr & "_Rechnung_vom_20" & right(rdat,2) & mid(rdat,3,2) & left(rdat, 2) & "_" & Right("0" & i, 2) & ".pdf") = False: i = i + 1:  Loop 'nächste freie Nummer suchen 
54.
 
55.
	shell.appactivate(quellpfad & alt) 
56.
	shell.sendkeys ("%{F4}"), true 							'wie ALT+F4 
57.
	WScript.Sleep 100 								'Wichtig!!!	 
58.
 
59.
	file.Name = onr & "_Rechnung_vom_20" & right(rdat,2) & mid(rdat,3,2) & left(rdat, 2) & "_" & Right("0" & i, 2) & ".pdf" 
60.
	neu = file.Name 
61.
	'msgbox(neu) 
62.
 
63.
	if fs.FolderExists(ziel & ONR & zielpfad) then 
64.
		if quellpfad <> ziel & ONR & zielpfad then								'Zielverzeichnis darf nicht gleich Quelle sein 
65.
			file.move (ziel & ONR & zielpfad)						'ins Zielverzeichnis verschieben 
66.
			y.WriteLine(quellpfad & alt & " >>> " & ziel & onr & zielpfad & neu & " <<< +v+u")		'Wenn der Ordner existiert wurde die Datei verschoben + protokolliert 
67.
		else 
68.
			fs.CreateFolder(quellpfad & "fertig\")						'Ordner erzeugen, da Ziel gleich Quelle 
69.
			file.move (quellpfad & "fertig\")							'in neuen Ordner verschieben 
70.
			y.WriteLine(quellpfad & alt & " >>> " & quellpfad & "fertig\" & neu & " <<< -v+u Quelle gleich Ziel")	'Wenn Ziel gleich Quelle wird nur die Namensänderung protokolliert 
71.
 
72.
		end if 
73.
	else 
74.
		fs.CreateFolder(quellpfad & "fertig\")						'Ordner erzeugen, da Ziel nicht vorhanden ist 
75.
		file.move (quellpfad & "fertig\")							'in neuen Ordner verschieben 
76.
		y.WriteLine(quellpfad & alt & " >>> " & quellpfad & "fertig\" & neu & " <<< -v+u kein Ziel vorhanden")	'Wenn der Ordner nicht existiert wird nur die Namensänderung protokolliert 
77.
	end if 
78.
 
79.
End if 
80.
 
81.
Next 
82.
 
83.
y.Close											'Logdatei schließen 
84.
 
85.
CreateObject("WScript.Shell").Run logdat						'Logdatei anzeigen
Bitte warten ..
Mitglied: joni2000de
23.07.2010 um 18:36 Uhr
Da bin ich nochmal.

Es ist doch noch eine Frage aufgetaucht. Das Öffnen der PDFs und das Umbenennen/Verschieben kommt sich teilweise in die Quere. Bei den Tests hat es funktioniert aber im Echtbetrieb ist es eher wie bei der Lotterie.

Wenn ich die PDFs nicht anzeigen lasse klappt alles wunderbar. Gibt es eine Möglichkeit die beiden Prozesse "auseinander zu halten"?

Danke

Gruß Joni
Bitte warten ..
Mitglied: 76109
23.07.2010 um 21:34 Uhr
Hallo joni2000de!

Geöffnete Dateien können logischerweise nicht umbenannt/verschoben werden. Und da Du die Fehlerbehandlung mit "On Error Resume Next" außerkraft gesetzt hast, bekommst Du natürlich auch keine entsprechenden Fehlermeldung. Letztendlich bleibt es so oder so ein Lotteriespiel

Du kannst mal versuchen, die Datei zu öffnen und manuell wieder zu schließen. Das geht in Zeile 41 mit folgender Codezeile:
01.
CreateObject("WScript.Shell").Run quellpfad & alt, 1, True
wobei das True am Ende bedeutet, dass die Script-Ausführung bis zum Schließen der Datei angehalten wird.

Gruß Dieter
Bitte warten ..
Mitglied: joni2000de
26.07.2010 um 15:59 Uhr
Hallo Dieter,

die Datei ist zum Zeitpunkt des Umbenennens oder Verschiebens nicht offen (sollte zumindest nicht). Da wird es sich vermutlich um ein timingproblem handeln. Doch dein Tipp hat dann die Lösung gebracht. Ich mache eine Kopie der Datei die ich umbenennen und verschieben möchte. Diese Kopie verwende ich für die Anzeige. Beim 2. Durchlauf mache ich eine 2. Kopie. Beim 3. wird dann die erste Kopie überschrieben, beim 4. die 2. usw. somit kann ich das Problem umgehen und es funktioniert. Am Ende die 2 Kopien in den Kübel schmeißen und fertig.

Nochmal danke für deine Hilfe!

Gruß Joni
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (17)

Frage von liquidbase zum Thema Windows Update ...

Windows Tools
gelöst Aussendienst Datensynchronisierung (12)

Frage von lighningcrow zum Thema Windows Tools ...