Batchdatei unter XP
Hallo zusammen,
mein Problem:
Sage Lohnprogramm und DB Direct Dll Konflikt.
um Sage Lohnbüro 2010 mit Dakota laufen zu lassen muß ich eine DLL umbenennen das Programm starten, darin arbeiten, Programm schließen und die Dll wieder zurück umbenennen.
Das Umbenennen der dll per Batch funktioniert, wenn ich jedoch das Lohnprogramm in die Batch mit einbinde wird die letzte Befehlszeile nicht mehr abgearbeitet.
move c:\windows\system32\HL_MED32.DLL c:\windows\system32\HL_MED32-DB.DLL
cd\
"c:\programme\Sage_Lohn\Start.exe\"
move c:\windows\\system32\HL_MED32-DB.DLL c:\windows\system32\HL_MED32.DLL
hat Jemand dazu eine Idee???
Gruß Fredy
mein Problem:
Sage Lohnprogramm und DB Direct Dll Konflikt.
um Sage Lohnbüro 2010 mit Dakota laufen zu lassen muß ich eine DLL umbenennen das Programm starten, darin arbeiten, Programm schließen und die Dll wieder zurück umbenennen.
Das Umbenennen der dll per Batch funktioniert, wenn ich jedoch das Lohnprogramm in die Batch mit einbinde wird die letzte Befehlszeile nicht mehr abgearbeitet.
move c:\windows\system32\HL_MED32.DLL c:\windows\system32\HL_MED32-DB.DLL
cd\
"c:\programme\Sage_Lohn\Start.exe\"
move c:\windows\\system32\HL_MED32-DB.DLL c:\windows\system32\HL_MED32.DLL
hat Jemand dazu eine Idee???
Gruß Fredy
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 133824
Url: https://administrator.de/contentid/133824
Ausgedruckt am: 22.11.2024 um 18:11 Uhr
13 Kommentare
Neuester Kommentar
Ähm....moin.....versuche doch mal nach dem Aufrufen des Programms wieder in das root Verzeichnis mit cd\\ zu gehen.....außerdem soltlest du anstatt "move" "ren" für rename nehmen.
Außerdem würde ich nach dem Aufrufen der Batch den befehl pause aufrufen, damit du nach beenden des Programms einfach ne Taste drücken kannst damit das Skript zu Ende läuft...
Dadurch das du das programm startest greift es natürlich auch auf die Datei zu und somit lässt diese sich nicht mehr umbenennen!
Probiers mal
Grüße
Außerdem würde ich nach dem Aufrufen der Batch den befehl pause aufrufen, damit du nach beenden des Programms einfach ne Taste drücken kannst damit das Skript zu Ende läuft...
Dadurch das du das programm startest greift es natürlich auch auf die Datei zu und somit lässt diese sich nicht mehr umbenennen!
Probiers mal
Grüße
Hallo,
schau mal hier, es ist zwar eine > VBS < aber es funktioniert.
Die Konstanten im Kopf mußt du natürlich anpassen.
Kannst es ja mal probieren.
Gruß Sam
schau mal hier, es ist zwar eine > VBS < aber es funktioniert.
Die Konstanten im Kopf mußt du natürlich anpassen.
Kannst es ja mal probieren.
Gruß Sam
'Konstanten deklarieren
'Zielprogrammm:
Const PROG = "C:\Windows\system32\notepad.exe"
Const PROGNAME = "notepad.exe" 'Zu entnehmen im Taskmanager -> Prozesse
'Ziel-DLL:
Const DLL = "D:\test.dll"
Const DLL2 = "D:\test.txt"
'Objekte deklarieren und erstellen
Dim objfso : Set objfso = CreateObject("Scripting.FileSystemObject")
Dim objshell : Set objshell = createobject("wscript.shell")
'Programmablauf .............................................................................................................................
'DLL umbenennen
objfso.movefile DLL,DLL2
'Programm starten
objshell.run PROG,,true
'DLL umbenennen
objfso.movefile DLL2,DLL
Servus,
der kleine - aber gemeine und notwendige Unterschied findet sich u.a im Start, das partout gerne eine Bezeichnung in "" haben möchte.
Daher die Gegenfrage:
Für was ist denn die störendedll?
Gruß Miyamoto
Zitat von @Miyamoto:
Hi,
ich würde es so machen
Hi,
ich würde es so machen
move c:\windows\system32\HL_MED32.DLL HL_MED32-DB.DLL
start /WAIT "Lohnprogramm" c:\programme\Sage_Lohn\Start.exe
move c:\windows\\system32\HL_MED32-DB.DLL HL_MED32.DLL
der kleine - aber gemeine und notwendige Unterschied findet sich u.a im Start, das partout gerne eine Bezeichnung in "" haben möchte.
btw: start.exe\ - da war auch eher ein Zeichen am Ende zuviel
..Und das man für das ganze Adminrechte braucht - eh klar.Daher die Gegenfrage:
Für was ist denn die störendedll?
Gruß Miyamoto
Zitat von @ObiWanMacGyver:
Warum kopierst du die DLL-Datei nicht einfachund hast 2 Dateien mit dem gleichen Inhalt und verschiedenen Namen?
Warum kopierst du die DLL-Datei nicht einfachund hast 2 Dateien mit dem gleichen Inhalt und verschiedenen Namen?
Servus,
weil zu 99.9999% der Grund der Umbenamserei derjenige ist, daß das Lohnprogramm nur dann läuft wenn die Dll eben nicht erreichbar ist.
Aber ich finde den Weg auch kosmisch - aber "Dakota" macht ja gerne was krummes
Gruß
Salü,
Gruß
- änder mal den Namen der dll.
- Welches Programm läuft dann nicht mehr?
- Die dll dann in den Programmordner verschieben, dessen Programm nicht mehr läuft
- C:\WINDOWS\System32\HL_MED32.DLL /unregServer
- c:\programme\programm\HL_MED32.DLL /regServer
- läuft das Programm dann?
- Wenn nicht auch mal in dem Alias/Link nachsehen -ob das Programm im jeweiligen Programmordner läuft - bzw. wenn nicht die dll in diesen Ordner verschieben/kopieren.
- notfalls nochmal alter Pfad\dll /unregserver neuer Pfad dll\ /regserver -siehe oben
- Erfolg/Mißerfolg posten
Gruß
Zitat von @Woersterf:
Danke @ Sam Trex
Das Script funktioniert sauber, Klasse Idee und sehr gut nachzuvollziehen
Dank auch an alle Anderen die sich gekümmert haben !!
Danke @ Sam Trex
Das Script funktioniert sauber, Klasse Idee und sehr gut nachzuvollziehen
Dank auch an alle Anderen die sich gekümmert haben !!
"schade", dass es dann doch dieser Weg wurde...
Aber warum einfach, wenns auch kompliziert geht
Denn "immer noch" - der user, der das Konstrukt bedienen muß", muß adminrechte haben ...
Gruß