1 'v2.5***************************************************** 2 ' File: cd-menu.vbs 3 ' Autor: dieseyer@gmx.de 4 ' dieseyer.de 5 '********************************************************* 6 7 Option Explicit 8 9 Dim Modus, DriveList, i, RegKey, objAdr, ZielSys, OpSys, Info 10 Dim ShellLink, LNK, aktCD, CDLw, WSHver, VBver, InfoDatei, LwFrei, LwHDD, LwSum 11 Dim Titel, Anzeige, Eingabe, aktAusw, Quelle, Ziel, DateiName, DateiNamen, InstDir 12 Dim Text, TextX, Text1, Text2, Text3, NT_9x, StopStelle, SysLw, FTP, TmpDir 13 14 Dim objNet, WSHShell, fso, Param, WSHEnv 15 16 InfoDatei = "\auswahl.txt" 17 18 Set objNet = WScript.CreateObject("WScript.Network") 19 Set WSHShell = WScript.CreateObject("WScript.Shell") 20 Set fso = WScript.CreateObject("Scripting.FileSystemObject") 21 Set WSHEnv = WSHShell.Environment("Process") 22 Set Param = Wscript.Arguments 23 24 If Param.Count >= 1 Then Modus = UCase(Param(0)) 25 26 ' ---------------------------------------------- 27 ' . . . ein paar Variablen holen 28 ' ---------------------------------------------- 29 ' Installationsverzeichnis festlegen: InstDir 30 ' Festplatte mit dem meisten freien Platz ermitteln: LwHDD 31 ' Testen lokalen Eigenschaften: SysLw, TmpDir, VBver, aktCD 32 ' Testen der Windows-Version: ZielSys, OpSys, NT_9x 33 ' nächste Zeile freigeben 34 '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 35 CDTest 36 37 If Modus = "TEST" Then 38 Titel = "WSH" & WSHver & " unter " & NT_9x & "/" & OpSys & " (" & aktCD & ")" 39 Else 40 Titel = "Auswahlmenü (c) service.cd@gmx.de" 41 End if 42 43 Info = NT_9x & " - OS-Version: " & vbTab & OpSys & vbCRLF 44 Info = Info & "System Laufwerk: " & vbTab & SysLw & vbCRLF 45 Info = Info & "CD-Laufwerk: " & vbTab & CDLw & vbCRLF 46 Info = Info & "Eingelegte CD: " & vbTab & aktCD & vbCRLF 47 Info = Info & "TMP-Verzeichnis: " & vbTab & TmpDir & vbCRLF 48 Info = Info & "WSH Version: " & vbTab & WSHver & " / " & VBver & vbCRLF 49 Info = Info & "Install-Verz.: " & vbTab & InstDir & vbTab & vbTab & LwFrei & " MB frei" & vbCRLF 50 51 If Modus = "TEST" Then MsgBox Info, vbOKOnly, Titel 52 53 ' nächste Zeile nicht freigeben 54 '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 55 ' WScript.Quit 56 57 ' ---------------------------------------------- 58 ' WSH-Version testen und ggf. aktualisieren 59 ' ---------------------------------------------- 60 ' scriptde.exe für Windows 2000 / XP 61 ' scr56de.exe für Windows 98 / ME / NT4 62 If WSHver < "2" Then 63 TextX = "" 64 Text = CDLw & "\TOOL\WScript.56\scriptde.exe" 65 If (fso.FileExists(Text)) AND OpSys = "Windows 2000" Then TextX = Text 66 67 Text = CDLw & "\TOOL\WScript.56\scr56de.exe" 68 If (fso.FileExists(Text)) AND not OpSys = "Windows 2000" Then TextX = Text 69 70 If not TextX = "" Then 71 Text = "Auf diesem PC ist z.Z. WindowsScriptHost Version 1.0 (WSH1) installiert" & vbCRLF 72 Text = Text & "Dieses Programm läuft besser, einfacher, schneller, höher, weiter, breiter . . ." & vbCRLF 73 Text = Text & "wenn eine neuere Version installiert ist. " & vbCRLF & vbCRLF 74 Text = Text & "(" & TextX & ")" & vbCRLF & vbCRLF 75 Text = Text & "Jetzt installieren? (Ist ein Neustart erforderlich?)" 76 77 'nächsten VIER Zeilen freigeben 78 '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 79 aktAusw = MsgBox(Text, vbYesNo + vbDefaultButton1 + vbQuestion, Titel) 80 if aktAusw <> vbNo Then 81 WSHShell.Run (TextX),,True 82 End If 83 End If 84 End If 85 86 ' ---------------------------------------------- 87 ' Das Hauptmenü: 88 ' ---------------------------------------------- 89 Do 90 If Modus = "TEST" Then 91 Titel = "WSH" & WSHver & " unter " & NT_9x & "/" & OpSys & " (" & aktCD & ")" 92 Else 93 Titel = "Auswahlmenü (c) service.cd@gmx.de" 94 End if 95 96 Anzeige = " 2 " & vbTAB & "Windows 2000 SP2 installieren." & vbCRLF 97 Anzeige = Anzeige & " 4 " & vbTAB & "Windows NT4 SP6a installieren." & vbCRLF 98 Anzeige = Anzeige & " a " & vbTAB & "Acrobat Reader v5 installieren." & vbCRLF 99 Anzeige = Anzeige & " f " & vbTAB & "F-PROT Virus-Scanner starten." & vbCRLF 100 Anzeige = Anzeige & " i6" & vbTAB & "InternetExplorer v6 installiern." & vbCRLF 101 Anzeige = Anzeige & " j " & vbTAB & "JVM für MS IE v6 installiern." & vbCRLF 102 Anzeige = Anzeige & " m " & vbTAB & "McAfee VirusScan starten." & vbCRLF 103 Anzeige = Anzeige & " mc" & vbTAB & "McAfee VirusScan Kopieren & starten." & vbCRLF 104 Anzeige = Anzeige & " o1" & vbTAB & "Office 2000 SR1 installieren." & vbCRLF 105 Anzeige = Anzeige & " o2" & vbTAB & "Office 2000 SR1 SP2 installieren." & vbCRLF 106 Anzeige = Anzeige & " v " & vbTAB & "VC, WinRAR ... kopieren." & vbCRLF 107 Anzeige = Anzeige & " w " & vbTAB & "Windows Commander starten." & vbCRLF 108 Anzeige = Anzeige & " wc" & vbTAB & "Windows Commander kopieren & starten." & vbCRLF 109 If (fso.FileExists(CDLw & InfoDatei)) Then Anzeige = Anzeige & " . . . was soll's denn sein? (h => Hilfe/Info's)" 110 If not (fso.FileExists(CDLw & InfoDatei)) Then Anzeige = Anzeige & " . . . was soll's denn sein?" 111 112 Eingabe = InputBox(Anzeige,Titel,,500,1) 113 114 If Eingabe = "" Then ' Abbruch vom Benutzer 115 ' aktAusw = MsgBox(". . . wirklich beenden?", vbYesNo + vbDefaultButton1 + vbQuestion, Titel) 116 aktAusw = MsgBox(". . . wirklich beenden?", vbYesNo + vbDefaultButton2 + vbQuestion, Titel) 117 118 if aktAusw <> vbNo Then WScript.Quit 119 End If 120 121 If UCase(Eingabe) = "TEST" AND Modus = "" Then Modus = "TEST" 122 If UCase(Eingabe) = "NOTEST" AND Modus = "TEST" Then Modus = "" 123 If UCase(Eingabe) = "-TEST" AND Modus = "TEST" Then Modus = "" 124 125 If Eingabe = "?" Then MsgBox Info, vbOKOnly, Titel 126 If Eingabe = "ß" Then MsgBox Info, vbOKOnly, Titel 127 128 If Eingabe = "2" Then 129 TextX = CDLw & "\W2kSp2\W2KSP2.exe" 130 If not (fso.FileExists(TextX)) Then MsgBox "Fehler!" & vbCRLF & vbCRLF & "Die erforderliche Datei " & TextX & " existiert nicht!", vbOKOnly, Titel 131 If (fso.FileExists(TextX)) Then WSHShell.Run (TextX),,TRUE 132 End If 133 134 If Eingabe = "4" Then 135 TextX = CDLw & "\NT4_SP6A\SP6I386.EXE" 136 If not (fso.FileExists(TextX)) Then MsgBox "Fehler!" & vbCRLF & vbCRLF & "Die erforderliche Datei " & TextX & " existiert nicht!", vbOKOnly, Titel 137 If (fso.FileExists(TextX)) Then WSHShell.Run (TextX),,TRUE 138 End If 139 140 If UCase(Eingabe) = "A" Then 141 TextX = CDLw & "\TOOL\AcroRead\ar500deu.exe" 142 If not (fso.FileExists(TextX)) Then MsgBox "Fehler!" & vbCRLF & vbCRLF & "Die erforderliche Datei " & TextX & " existiert nicht!", vbOKOnly, Titel 143 If (fso.FileExists(TextX)) Then WSHShell.Run (TextX),,TRUE 144 End If 145 146 If UCase(Eingabe) = "F" Then FProtCopy 147 148 If UCase(Eingabe) = "H" Then 149 TextX = CDLw & InfoDatei 150 If not (fso.FileExists(TextX)) Then MsgBox "Fehler!" & vbCRLF & vbCRLF & "Die erforderliche Datei " & TextX & " existiert nicht!", vbOKOnly, Titel 151 If (fso.FileExists(TextX)) Then WSHShell.Run (TextX) 152 End If 153 154 If UCase(Eingabe) = "I6" Then 155 TextX = CDLw & "\TOOL\ie6\ie6setup.exe" 156 If not (fso.FileExists(TextX)) Then MsgBox "Fehler!" & vbCRLF & vbCRLF & "Die erforderliche Datei " & TextX & " existiert nicht!", vbOKOnly, Titel 157 If (fso.FileExists(TextX)) Then WSHShell.Run (TextX),,TRUE 158 End If 159 160 If UCase(Eingabe) = "J" Then 161 TextX = CDLw & "\TOOL\WinXX\JVM\msjavx86.exe" 162 If not (fso.FileExists(TextX)) Then MsgBox "Fehler!" & vbCRLF & vbCRLF & "Die erforderliche Datei " & TextX & " existiert nicht!", vbOKOnly, Titel 163 If (fso.FileExists(TextX)) Then WSHShell.Run (TextX),,TRUE 164 End If 165 166 If UCase(Eingabe) = "M" Then 167 If NT_9x = "NT" Then TextX = CDLw & "\MCAFEE_4.DOS\ScanNT.BAT" 168 If NT_9x = "9x" Then TextX = CDLw & "\MCAFEE_4.DOS\Scan9x.BAT" 169 ExeRun 170 End If 171 172 If UCase(Eingabe) = "MC" Then McAfeeCopy 173 If UCase(Eingabe) = "MI" Then McAfeeCopy 174 175 If UCase(Eingabe) = "O1" Then 176 TextX = CDLw & "\TOOL\O2kSR1\o2ksr1adl.exe" 177 If (fso.FileExists(TextX)) Then 178 Ziel = TmpDir & "\o2ksr1" 179 180 If (fso.FolderExists(Ziel)) Then fso.DeleteFolder(Ziel), True 181 182 WSHShell.Run (TextX & " /T:" & Ziel),,TRUE 183 184 TextX = Ziel & "\setup.exe" 185 If not (fso.FileExists(TextX)) Then MsgBox "Fehler!" & vbCRLF & vbCRLF & "Die erforderliche Datei " & TextX & " existiert nicht!", vbOKOnly, Titel 186 If (fso.FileExists(TextX)) Then WSHShell.Run (TextX),,TRUE 187 End If 188 189 If not (fso.FileExists(TextX)) Then MsgBox "Fehler!" & vbCRLF & vbCRLF & "Die erforderliche Datei " & TextX & " existiert nicht!", vbOKOnly, Titel 190 End If 191 192 If UCase(Eingabe) = "O2" Then 193 TextX = CDLw & "\TOOL\Office.2k\O2kSR1Sp2\sp2upd.exe" 194 If not (fso.FileExists(TextX)) Then MsgBox "Fehler!" & vbCRLF & vbCRLF & "Die erforderliche Datei " & TextX & " existiert nicht!", vbOKOnly, Titel 195 If (fso.FileExists(TextX)) Then WSHShell.Run (TextX),,TRUE 196 End If 197 198 If UCase(Eingabe) = "V" Then VCcopy 199 200 If UCase(Eingabe) = "W" Then 201 TextX = CDLw & "\WinCMD\WINCMD32.EXE" 202 If not (fso.FileExists(TextX)) Then MsgBox "Fehler!" & vbCRLF & vbCRLF & "Die erforderliche Datei " & TextX & " existiert nicht!", vbOKOnly, Titel 203 If (fso.FileExists(TextX)) Then WSHShell.Run (TextX) 204 End If 205 206 If UCase(Eingabe) = "WC" Then WinCMDcopy 207 If UCase(Eingabe) = "WI" Then WinCMDcopy 208 209 If UCase(Eingabe) = "X" Then WScript.Quit 210 211 Loop 212 213 214 Sub VCcopy 215 ' ---------------------------------------------- 216 ' DateienListe holen und löschen 217 ' ---------------------------------------------- 218 ' Zuerst wird die Liste der zu kopierenden Dateien (Quelle) geholt, 219 ' um dann im Zielverzeichnis genau diese Dateien zu löschen. 220 ' Dadurch gibt es keine Probleme beim überschreiben beim Kopiervorgang. 221 222 Quelle = CDLw & "\DISKS\win_pc\win_pc" 223 If not (fso.FolderExists(Quelle)) Then 224 MsgBox "Fehler!" & vbCRLF & vbCRLF & "SubVCcopy: Das erforderliche Verzeichnis " & Quelle & " nicht gefunden!", vbOKOnly, Titel 225 Exit Sub 226 End If 227 228 Set Quelle = fso.GetFolder(WSHShell.ExpandEnvironmentStrings(Quelle)) 229 Set DateiNamen = Quelle.Files 230 For Each i In DateiNamen 231 DateiName = ZielSys & "\" & i.Name 232 On Error Resume Next 233 fso.DeleteFile(DateiName), True 234 On Error GoTo 0 235 Next 236 237 ' ---------------------------------------------- 238 ' Dateien kopieren 239 ' ---------------------------------------------- 240 fso.CopyFolder Quelle, ZielSys 241 242 Anzeige = "VC, WinRAR, WinCMD . . . in's lokale System (" & ZielSys & ") kopieren . . ." & vbCRLF & vbCRLF 243 Anzeige = Anzeige & ". . . ist erledigt! " 244 MsgBox Anzeige,, Titel 245 End Sub ' VCcopy 246 247 Sub McAfeeCopy 248 Quelle = CDLw & "\MCAFEE_4.DOS" 249 If not (fso.FolderExists(Quelle)) Then ' Quelle vorhanden? 250 MsgBox "SubMcAfeeCopy: " & "Fehler!" & vbCRLF & vbCRLF & "Das erforderliche Verzeichnis " & Quelle & " nicht gefunden!", vbOKOnly, Titel 251 Exit Sub 252 End If 253 254 Ziel = InstDir & "\MCAFEE_4.DOS" 255 Ziel = WSHShell.ExpandEnvironmentStrings(Ziel) 256 257 If (fso.FolderExists(Ziel)) Then ' Zielverzeichnis löschen, fals vorhanden 258 If Modus = "TEST" Then MsgBox Ziel & " wird gelöscht",, Titel 259 fso.DeleteFolder(Ziel), True 260 End If 261 262 fso.CopyFolder Quelle, Ziel ' Quelle ins Zielverzeichnis kopieren 263 If Modus = "TEST" Then MsgBox Quelle & " wurde nach " & Ziel & " kopiert!",, Titel 264 265 ' fso.DeleteFile(Ziel & "\clean.dat"), True ' clean.dat löschen - damit kann man Geld verdienen 266 267 If NT_9x = "NT" Then TextX = Ziel & "\ScanNT.BAT" 268 If NT_9x = "9x" Then TextX = Ziel & "\Scan9x.BAT" 269 270 ' ---------------------------------------------- 271 ' Verknüpfung anlegen - erreichbar wegen PATH 272 ' ---------------------------------------------- 273 Set ShellLink = WSHShell.CreateShortcut(ZielSys & "\ma.lnk") 274 Text1 = "LNK: " & vbTab & WSHShell.CreateShortcut(ZielSys & "\ma.lnk") & vbCRLF 275 ShellLink.TargetPath = TextX 276 Text1 = Text1 & "Target: " & vbTab & TextX & vbCRLF 277 ShellLink.WorkingDirectory = Ziel 278 Text1 = Text1 & "WorkDir: " & vbTab & Ziel & vbCRLF 279 ShellLink.Save 280 281 If Modus = "TEST" Then MsgBox "Folgende Verknüpfung wurde erstellt: " & vbCRLF & Text1,,Titel 282 283 Anzeige = Quelle & " wurde nach " & Ziel & " kopiert!" & vbCRLF & vbCRLF 284 Anzeige = Anzeige & "McAfee - Scan kann per "" ma "" aufgerufen werden." 285 MsgBox Anzeige,, Titel 286 287 WSHShell.Run ("ma") 288 289 End Sub ' McAfeeCopy 290 291 Sub SuperScanCopy 292 Quelle = CDLw & "\Tool\SuperScan" 293 If not (fso.FolderExists(Quelle)) Then ' Quelle vorhanden? 294 MsgBox "SuperScanCopy: " & "Fehler!" & vbCRLF & vbCRLF & "Das erforderliche Verzeichnis " & Quelle & " nicht gefunden!", vbOKOnly, Titel 295 Exit Sub 296 End If 297 298 Set Quelle = fso.GetFolder(WSHShell.ExpandEnvironmentStrings(Quelle)) 299 Set DateiNamen = Quelle.Files 300 301 For Each i In DateiNamen ' Quell-Dateien-Liste 302 DateiName = ZielSys & "\" & i.Name ' ist Liste der zu löschenden 303 On Error Resume Next ' Dateien im Zielverzeichnis 304 ' MsgBox Dateiname,,Titel 305 fso.DeleteFile(DateiName), True 306 On Error GoTo 0 307 Next 308 309 Ziel = InstDir & "\SuperSc" 310 Ziel = WSHShell.ExpandEnvironmentStrings(Ziel) 311 312 ' Zielverzeichnis löschen, fals vorhanden 313 If (fso.FolderExists(Ziel)) Then fso.DeleteFolder(Ziel), True 314 315 ' ---------------------------------------------- 316 ' Dateien kopieren 317 ' ---------------------------------------------- 318 fso.CopyFolder Quelle, Ziel 319 If Modus = "TEST" Then MsgBox Quelle & " wurde nach " & Ziel & " kopiert!",, Titel 320 321 ' ---------------------------------------------- 322 ' Verknüpfung anlegen - erreichbar wegen PATH 323 ' ---------------------------------------------- 324 Set ShellLink = WSHShell.CreateShortcut(ZielSys & "\scanner.lnk") 325 ShellLink.TargetPath = Ziel & "\scanner.exe" 326 ShellLink.WorkingDirectory = Left(Ziel, InstrRev(Ziel, "\")) 327 ShellLink.Save 328 Set ShellLink = WSHShell.CreateShortcut(ZielSys & "\SS.lnk") 329 ShellLink.TargetPath = Ziel & "\scanner.exe" 330 ShellLink.WorkingDirectory = Left(Ziel, InstrRev(Ziel, "\")) 331 ShellLink.Save 332 Set ShellLink = WSHShell.CreateShortcut(ZielSys & "\SScan.lnk") 333 ShellLink.TargetPath = Ziel & "\scanner.exe" 334 ShellLink.WorkingDirectory = Left(Ziel, InstrRev(Ziel, "\")) 335 ShellLink.Save 336 Set ShellLink = WSHShell.CreateShortcut(ZielSys & "\SuperScan.lnk") 337 ShellLink.TargetPath = Ziel & "\scanner.exe" 338 ShellLink.WorkingDirectory = Left(Ziel, InstrRev(Ziel, "\")) 339 ShellLink.Save 340 341 Anzeige = Quelle & " wurde nach " & Ziel & " kopiert!" & vbCRLF & vbCRLF 342 Anzeige = Anzeige & "SuperScan kann per "" SScan "" aufgerufen werden." 343 MsgBox Anzeige,, Titel 344 345 WSHShell.Run ("ss") 346 End Sub ' SuperScanCopy 347 348 Sub WinCMDcopy 349 ' ---------------------------------------------- 350 ' DateienListe holen und löschen 351 ' ---------------------------------------------- 352 ' Zuerst wird die Liste der zu kopierenden Dateien (Quelle) geholt, 353 ' um dann im Zielverzeichnis genau diese Dateien zu löschen. 354 ' Dadurch gibt es keine Probleme beim überschreiben beim Kopiervorgang. 355 356 Quelle = CDLw & "\WinCMD" 357 Ziel = InstDir & "\WinCMD" 358 If not (fso.FolderExists(Quelle)) Then 359 MsgBox "SubWinCMDcopy: " & "Fehler!" & vbCRLF & vbCRLF & "Das erforderliche Verzeichnis " & Quelle & " nicht gefunden!", vbOKOnly, Titel 360 Exit Sub 361 End If 362 363 ' ---------------------------------------------- 364 ' Dateien kopieren 365 ' ---------------------------------------------- 366 367 If Modus = "TEST" Then MsgBox Ziel & " wird gelöscht . . . ",, Titel 368 If (fso.FolderExists(Ziel)) Then fso.DeleteFolder(Ziel), True 369 If Modus = "TEST" Then MsgBox Ziel & " ist gelöscht . . . ",, Titel 370 If Modus = "TEST" Then MsgBox Quelle & " wird jetzt nach " & Ziel & " kopiert!",, Titel 371 fso.CopyFolder Quelle, Ziel 372 If Modus = "TEST" Then MsgBox Quelle & " wurde nach " & Ziel & " kopiert!",, Titel 373 374 ' ---------------------------------------------- 375 ' Verknüpfung anlegen - erreichbar wegen PATH 376 ' ---------------------------------------------- 377 Set ShellLink = WSHShell.CreateShortcut(ZielSys & "\wc.lnk") 378 ShellLink.TargetPath = Ziel & "\Wincmd32.exe" 379 ShellLink.WorkingDirectory = Left(Ziel, InstrRev(Ziel, "\")) 380 ShellLink.Save 381 Set ShellLink = WSHShell.CreateShortcut(ZielSys & "\wincmd.lnk") 382 ShellLink.TargetPath = Ziel & "\Wincmd32.exe" 383 ShellLink.WorkingDirectory = Left(Ziel, InstrRev(Ziel, "\")) 384 ShellLink.Save 385 Set ShellLink = WSHShell.CreateShortcut(ZielSys & "\wincmd32.lnk") 386 ShellLink.TargetPath = Ziel & "\Wincmd32.exe" 387 ShellLink.WorkingDirectory = Left(Ziel, InstrRev(Ziel, "\")) 388 ShellLink.Save 389 390 Anzeige = Quelle & " wurde nach " & Ziel & " kopiert!" & vbCRLF & vbCRLF 391 Anzeige = Anzeige & "WinCommander kann per "" wc "" aufgerufen werden." 392 MsgBox Anzeige,, Titel 393 394 WSHShell.Run ("wc") 395 End Sub ' WinCMDcopy 396 397 Sub FProtCopy 398 ' ---------------------------------------------- 399 ' DateienListe holen und löschen 400 ' ---------------------------------------------- 401 ' Zuerst wird die Liste der zu kopierenden Dateien (Quelle) geholt, 402 ' um dann im Zielverzeichnis genau diese Dateien zu löschen. 403 ' Dadurch gibt es keine Probleme beim überschreiben beim Kopiervorgang. 404 405 Quelle = CDLw & "\F-Prot" 406 Ziel = InstDir & "\F-Prot" 407 If not (fso.FolderExists(Quelle)) Then 408 MsgBox "SubFProtCopy: " & "Fehler!" & vbCRLF & vbCRLF & "Das erforderliche Verzeichnis " & Quelle & " nicht gefunden!", vbOKOnly, Titel 409 Exit Sub 410 End If 411 412 Set Quelle = fso.GetFolder(WSHShell.ExpandEnvironmentStrings(Quelle)) 413 Set DateiNamen = Quelle.Files 414 For Each i In DateiNamen 415 DateiName = Ziel & "\" & i.Name 416 On Error Resume Next 417 ' MsgBox Dateiname,,Titel 418 fso.DeleteFile(DateiName), True 419 On Error GoTo 0 420 Next 421 422 ' ---------------------------------------------- 423 ' Dateien kopieren 424 ' ---------------------------------------------- 425 If Modus = "TEST" Then MsgBox Quelle & " wurde nach " & Ziel & " kopiert!",, Titel 426 fso.CopyFolder Quelle, Ziel 427 428 ' ---------------------------------------------- 429 ' Verknüpfung anlegen - erreichbar wegen PATH 430 ' ---------------------------------------------- 431 Set ShellLink = WSHShell.CreateShortcut(ZielSys & "\fp.lnk") 432 ShellLink.TargetPath = Ziel & "\fp.bat" 433 ShellLink.WorkingDirectory = Ziel 434 ShellLink.Save 435 Set ShellLink = WSHShell.CreateShortcut(ZielSys & "\f-prot.lnk") 436 ShellLink.TargetPath = Ziel & "\fp.bat" 437 ShellLink.WorkingDirectory = Ziel 438 ShellLink.Save 439 If Modus = "TEST" Then MsgBox "Folgende Verknüpfung wurde erstellt: " & vbCRLF & ZielSys & "\f-p.lnk",,Titel 440 441 Anzeige = "F-PROT . . . nach " & Ziel & " kopieren . . ." & vbCRLF 442 Anzeige = Anzeige & ". . . ist erledigt! " & vbCRLF & vbCRLF 443 Anzeige = Anzeige & "F-PROT wird jetzt gestartet! " 444 MsgBox Anzeige,, Titel 445 446 WSHShell.Run ("fp") 447 End Sub ' FProtCopy 448 449 Sub ExeRun 450 ' ---------------------------------------------- 451 ' *.exe - Datei ausführen 452 ' ---------------------------------------------- 453 ' Es wird ein Verknüpfung %TMP%\?????.lnk erstellt, die zusätzlich 454 ' das Arbeitsverzeichnis enthält - manche Programme laufen sonst nicht 455 456 If not (fso.FileExists(TextX)) Then 457 MsgBox "Fehler!" & vbCRLF & vbCRLF & "SubExeRun: Die erforderliche Datei " & TextX & " existiert nicht!", vbOKOnly, Titel 458 Exit Sub 459 End If 460 461 LNK = Mid(TextX, (InstrRev(TextX, "\")+1)) 462 LNK = Left( LNK, (Instr(LNK, ".")-1)) 463 464 If Modus = "TEST" Then MsgBox "SubExeRUN erstellt folgenden Link und ruft ihn auf: " & vbCRLF & LNK,,Titel 465 466 Text = TmpDir & "\" & LNK 467 If (fso.FileExists(Text & ".pif")) Then 468 fso.DeleteFile(Text & ".pif"), True 469 If Modus = "TEST" Then MsgBox Text & ".pif . . . gelöscht!" ,,Titel 470 End If 471 472 If (fso.FileExists(Text & ".lnk")) Then 473 fso.DeleteFile(Text & ".lnk"), True 474 If Modus = "TEST" Then MsgBox Text & ".lnk . . . gelöscht!",,Titel 475 End If 476 477 If (fso.FileExists(Text & ".")) Then 478 fso.DeleteFile(Text & "."), True 479 If Modus = "TEST" Then MsgBox Text & ". . . . gelöscht!" ,,Titel 480 End If 481 If (fso.FileExists(Text)) Then 482 fso.DeleteFile(Text), True 483 If Modus = "TEST" Then MsgBox Text & " . . . gelöscht!" ,,Titel 484 End If 485 486 Set ShellLink = WSHShell.CreateShortcut(Text & ".lnk") 487 Text1 = "LNK: " & vbTab & WSHShell.CreateShortcut(Text & ".lnk") & vbCRLF 488 ShellLink.WorkingDirectory = Left(TextX, InstrRev(TextX, "\")) 489 Text1 = Text1 & "WorkDir: " & vbTab & Left(TextX, InstrRev(TextX, "\")) & vbCRLF 490 ShellLink.TargetPath = TextX 491 Text1 = Text1 & "Target: " & vbTab & Left(TextX, InstrRev(TextX, "\")) & vbCRLF 492 ShellLink.Save 493 494 If Modus = "TEST" Then MsgBox "Folgende Verknüpfung wurde erstellt: " & vbCRLF & Text1,,Titel 495 496 ' Text = Text & ".lnk" 497 If Modus = "TEST" Then MsgBox Text & vbCRLF & "wird aufgerufen . . .",,Titel 498 499 WSHShell.Run Text 500 ' WSHShell.Run (Text),,True ' auf Anwendungsende warten geht nicht immer 501 ' WScript.Sleep 7500 ' geht erst ab WSH2 502 End Sub ' ExeRun 503 504 Sub CDTest 505 ' --------------------------------------------------------- 506 ' Testen der Windows-Version: ZielSys, OpSys, NT_9x 507 ' --------------------------------------------------------- 508 On Error Resume Next 509 RegKey = "HKLM\Software\Microsoft\Windows\CurrentVersion\Productname" 510 TextX = WSHShell.RegRead(RegKey) 511 If not err.number <> 0 Then 512 ZielSys = "Command" 513 OpSys = WSHShell.RegRead(RegKey) 514 NT_9x = "9x" 515 End if 516 On Error GoTo 0 517 518 On Error Resume Next 519 RegKey = "HKLM\Software\Microsoft\Windows NT\CurrentVersion\CurrentVersion" 520 TextX = "Windows NT " & WSHShell.RegRead(RegKey) 521 If not err.number <> 0 Then 522 ZielSys = "System32" 523 OpSys = "Windows NT " & WSHShell.RegRead(RegKey) 524 NT_9x = "NT" 525 End if 526 On Error GoTo 0 527 528 On Error Resume Next 529 RegKey = "HKLM\Software\Microsoft\Windows NT\CurrentVersion\Productname" 530 TextX = WSHShell.RegRead(RegKey) 531 If not err.number <> 0 Then 532 ZielSys = "System32" 533 OpSys = WSHShell.RegRead(RegKey) 534 NT_9x = "NT" 535 End if 536 On Error GoTo 0 537 538 Zielsys = WSHShell.ExpandEnvironmentStrings(WSHShell.Environment.Item("WINDIR")) & "\" & ZielSys 539 540 ' --------------------------------------------------------- 541 ' Lokalen Eigenschaften: SysLw, TmpDir, VBver, aktCD 542 ' --------------------------------------------------------- 543 CDLw = Left (fso.GetFolder("."), 2) ' CD-Lw.-Buchstabe 544 aktCD = fso.GetDrive(fso.GetDriveName(CDLw)).VolumeName ' CD-Label 545 546 SysLw = Left (WSHEnv ("WINDIR"), 3) 547 548 TmpDir = WSHEnv("TEMP") 549 If TmpDir = "" Then TmpDir = WSHEnv("TMP") 550 551 ' Unter Win2k ist das Temp-Verz. ?:\Dokumente und Einstellungen\UserName\TEMP 552 ' Wenn TmpDir das ..\UserName\TEMP-Verzeichnis ist und ein ?:\Winnt\TEMP existiert, 553 ' wird TmpDir auf ?:\Winnt\TEMP geändert 554 if 0 <> InstrRev(TmpDir, objNet.UserName) AND (fso.FolderExists(WSHEnv("SystemRoot") & "\TEMP")) Then TmpDir = WSHEnv("SystemRoot") & "\TEMP" 555 556 VBver = WScript.Version 557 if VBver < "5.1" Then WSHver = "1" 558 if VBver = "5.1" Then WSHver = "2" 559 if VBver = "5.6" Then WSHver = "5.6" 560 if VBver > "5.6" Then WSHver = ">5.6" 561 562 ' --------------------------------------------------------- 563 ' Festplatte mit dem meisten freien Platz ermitteln: LwHDD 564 ' --------------------------------------------------------- 565 Set DriveList = fso.Drives 566 LwFrei = CInt(0) 567 For Each i in DriveList 568 if 2 = i.DriveType Then 569 If i.IsReady Then 570 If LwFrei < CInt(FormatNumber(i.FreeSpace/1024/1024, 0)) Then 571 LwFrei = CInt(FormatNumber(i.FreeSpace/1024/1024, 0)) 572 LwHDD = i.DriveLetter & ":" 573 LwSum = CInt(FormatNumber(i.TotalSize/1024/1024, 0)) 574 End If 575 End If 576 End If 577 Next 578 579 ' --------------------------------------------------------- 580 ' Installationsverzeichnis festlegen: InstDir 581 ' --------------------------------------------------------- 582 ' Hier werden Dateien abelegt, die für spätere oder wiederholte Installationen 583 ' bzw. Updates erforderlich sind. Nachdem das %TEMP% Verzeichnis als InstDir festgelegt 584 ' wurde, wird zunächst versucht auf dem SystemLaufwerk (meist C:) und anschließend auf 585 ' LwHDD (Festplatte/Partition auf dem System mit dem meisten freien Platz; z.B. D:) ein 586 ' vorhandenes Verzeichnis (setups, setup oder install) zu finden. Existiert ein solches 587 ' Verzeichnis, wird InstDir überschrieben. 588 589 If (fso.FolderExists(TmpDir)) Then InstDir = WSHShell.ExpandEnvironmentStrings(TmpDir) 590 If (fso.FolderExists(SysLw & "setups" )) Then InstDir = WSHShell.ExpandEnvironmentStrings(SysLw & "\setups") 591 If (fso.FolderExists(SysLw & "setup" )) Then InstDir = WSHShell.ExpandEnvironmentStrings(SysLw & "\setup") 592 If (fso.FolderExists(SysLw & "install")) Then InstDir = WSHShell.ExpandEnvironmentStrings(SysLw & "\install") 593 If (fso.FolderExists(SysLw & "driver" )) Then InstDir = WSHShell.ExpandEnvironmentStrings(SysLw & "\install") 594 If (fso.FolderExists(SysLw & "treiber")) Then InstDir = WSHShell.ExpandEnvironmentStrings(SysLw & "\install") 595 If (fso.FolderExists(LwHDD & "\setups" )) Then InstDir = WSHShell.ExpandEnvironmentStrings(LwHDD & "\setups") 596 If (fso.FolderExists(LwHDD & "\setup" )) Then InstDir = WSHShell.ExpandEnvironmentStrings(LwHDD & "\setup") 597 If (fso.FolderExists(LwHDD & "\install")) Then InstDir = WSHShell.ExpandEnvironmentStrings(LwHDD & "\install") 598 If (fso.FolderExists(LwHDD & "\driver" )) Then InstDir = WSHShell.ExpandEnvironmentStrings(LwHDD & "\install") 599 If (fso.FolderExists(LwHDD & "\treiber")) Then InstDir = WSHShell.ExpandEnvironmentStrings(LwHDD & "\install") 600 601 If Modus = "TEST" Then MsgBox LwHDD & " ist das Laufwerk mit dem meisten freien Platz: " & LwFrei & " MB von " & LwSum & " MB frei. ", vbOKOnly, Titel 602 603 End Sub ' CDTest