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

html datei per vbs schreiben

Frage Entwicklung VB for Applications

Mitglied: 53111

53111 (Level 1)

17.09.2007, aktualisiert 18.10.2012, 5448 Aufrufe, 3 Kommentare

ich möchte per vbs eine html datei schreiben lassen? die "" und ( stören scheinbar das schreiben der datei. wie kann ich das problem lösen - wenn möglich ohne eine extra datei zu erstellen aus der ich den text importiere?


01.
HTMLdatei.Write("<html><head><title>Test</title> 
02.
<script type="text/javascript"> 
03.
function Weiter () { 
04.
  if (document.Testform.Art[0].checked == true) { 
05.
    window.location.href = "frmdatei.htm"; 
06.
  } else if (document.Testform.Art[1].checked == true) { 
07.
    window.location.href = "datei.htm"; 
08.
  } else { 
09.
    alert("Bitte eine Auswahl treffen"); 
10.
11.
12.
</script> 
13.
</head><body> 
14.
<form name="Testform" action="">")
Mitglied: bastla
17.09.2007 um 16:25 Uhr
Hallo saibonaut!

Versuch es mal so:
01.
HTMLdatei.Write("<html><head><title>Test</title>" & vbCrLF & _ 
02.
"<script type=""text/javascript"">" & vbCrLF & _ 
03.
"function Weiter () {" & vbCrLF & _ 
04.
"  if (document.Testform.Art[0].checked == true) {" & vbCrLF & _ 
05.
"    window.location.href = ""frmdatei.htm"";" & vbCrLF & _ 
06.
"  } else if (document.Testform.Art[1].checked == true) {" & vbCrLF & _ 
07.
"    window.location.href = ""datei.htm"";" & vbCrLF & _ 
08.
"  } else {" & vbCrLF & _ 
09.
"    alert(""Bitte eine Auswahl treffen"");" & vbCrLF & _ 
10.
"  }" & vbCrLF & _ 
11.
"}" & vbCrLF & _ 
12.
"</script>" & vbCrLF & _ 
13.
"</head><body>" & vbCrLF & _ 
14.
"<form name=""Testform"" action="""">")
Jede VBS-Zeile wird getrennt interpretiert, wenn sie also über mehrere Zeilen reichen soll, am Ende ein " _" anfügen.

Um in die Zieldatei eine Zeilenschaltung zu schreiben, vbCrLF verwenden.

Die einzelnen Strings können nicht über eine Zeile reichen, daher jeweils zeilenweise verknüpfen.

Jedes Anführungszeichen, das als solches geschrieben werden soll, muss verdoppelt oder durch Chr(34) ersetzt werden.

Einfacher wäre es übrigens, jede einzelne Zeile mit "HTMLdatei.WriteLine" zu schreiben.

Grüße
bastla
Bitte warten ..
Mitglied: 53111
17.09.2007 um 18:00 Uhr
ok danke. habe es jetzt so gelöst:
allerdings würde ich nun gerne aus der html datei/jscript werte an eine vbs datei zurückgeben:

LESENanfang:
01.
<html><head><title>Test</title> 
02.
<script type="text/javascript"> 
03.
function Weiter () { 
04.
  if (document.Testform.Art[0].checked == true) { 
05.
    alert("0"); 
06.
  } else if (document.Testform.Art[1].checked == true) { 
07.
    window.location.href = "datei.htm"; 
08.
  } else { 
09.
    alert("Bitte eine Auswahl treffen"); 
10.
11.
12.
</script> 
13.
</head><body> 
14.
<form name="Testform" action="">
LESENende:
01.
<br><input type="button" value="Starten" onclick="Weiter()"> 
02.
</form> 
03.
</body></html>

01.
DIM fsoSCHREIBEN        'FSO zum Speichern der HTML Datei 
02.
DIM fsoLESENanfang     'LESEN der aus txt' 
03.
DIM fsoLESENmitte 
04.
DIM fspLESENende 
05.
DIM objOrdner    ' Variable für den Ordner, in dem die Unterordner entstehen 
06.
DIM objUnterordner ' Variable für die Unterordner 
07.
DIM Ordner     ' Variabel für den Ordner, in dem die Unterordner entstehen 
08.
DIM ordnerarray 
09.
DIM HTMLdatei 
10.
  
11.
DIM LESENanfangTXT  'Textstreams aus TXT Dateien' 
12.
DIM LESENmitteTXT  
13.
DIM LESENendeTXT 
14.
 
15.
DIM inhaltLESENanfang                  'Inhalt der TXT Dateien ' 
16.
DIM inhaltLESENmitte  
17.
DIM inhaltLESENende  
18.
 
19.
DIM HTMLtext 'wird momentan nicht benötigt' 
20.
Const ForWriting = 2 
21.
Const fsForReading = 1 
22.
 
23.
 
24.
Set fsoSCHREIBEN = CreateObject("Scripting.FileSystemObject") 
25.
set HTMLdatei = fsoSCHREIBEN.OpenTextFile("C:\Test.html", ForWriting, true) 
26.
 
27.
 
28.
Set fsoLESENanfang  = CreateObject("Scripting.FileSystemObject") 
29.
set LESENanfangTXT = fsoLESENanfang.OpenTextFile("C:\LESENanfang.txt", fsForReading) 
30.
inhaltLESENanfang = LESENanfangTXT.ReadAll 
31.
 
32.
'Set fsoLESENmitte = CreateObject("Scripting.FileSystemObject") 
33.
'set LESENmitteTXT = fsoLESENmitte.OpenTextFile("C:\LESENmitte.txt", fsForReading) 
34.
'inhaltLESENmitte = LESENmitteTXT.ReadAll 
35.
 
36.
Set fspLESENende = CreateObject("Scripting.FileSystemObject") 
37.
set LESENendeTXT = fspLESENende.OpenTextFile("C:\LESENende.txt", fsForReading) 
38.
inhaltLESENende = LESENendeTXT.ReadAll 
39.
 
40.
 
41.
'Anfang der HTML Datei schreiben' 
42.
HTMLdatei.Write(inhaltLESENanfang) 
43.
 
44.
 
45.
x = 0 
46.
Ordner = "C:\" 
47.
Set FSO = CreateObject("Scripting.FileSystemObject") 
48.
Set objOrdner = FSO.GetFolder(Ordner) 
49.
Temp = "" 
50.
For Each objUnterordner in objOrdner.SubFolders 
51.
	Temp = Temp & ":" & objUnterordner.Name 
52.
Next 
53.
ordnerarray = Split(Mid(Temp, 2), ":") 
54.
        
55.
 
56.
     
57.
    For h = 0 to UBound(ordnerarray)-1 
58.
    HTMLdatei.Write("<input type=""checkbox"" name=""Art"" value=""" & ordnerarray(h)& """>" & ordnerarray(h) & "<br/>") 
59.
 
60.
 
61.
    Next  
62.
    HTMLdatei.Write(inhaltLESENende)    
63.
 
64.
HTMLdatei.Close

und nun soll je nach angeklickter checkbox der entsprechende wert aus "value" hier anstelle der InputBox in "OrdnerUndNutzer" eingefügt und ausgeführt werden.

vbs:



01.
 
02.
OrdnerUndNutzer = InputBox("Welche Datei wollen Sie bearbeiten?",,"Ordnername") 
03.
zielfile = "H:\" & OrdnerUndNutzer 
04.
 
05.
' Zugriff auf WMI 
06.
Set wmi = GetObject("winmgmts:") 
07.
' "Jeder" soll die Datei nur lesen dürfen, das Löschen wird explizit verboten 
08.
' "Administrator" soll alle Rechte erhalten 
09.
 
10.
 Set ACE1 = CreateACE(wmi, 2032127, 0, SetTrustee(wmi, "Administratoren")) 
11.
              Set ACE2 = CreateACE(wmi, 2032127, 0, SetTrustee(wmi, "OrdnerUndNutzer" ))              
12.
               
13.
              newdacl = Array(ACE1, ACE2) 
14.
 
15.
 
16.
 
17.
' die Datei, die diese Rechte erhalten soll, wird angesprochen 
18.
Set fileinstance = GetFile(wmi,zielfile) 
19.
 
20.
' der alte Security Descriptor wird geöffnet 
21.
retval = fileinstance.getsecuritydescriptor(sec) 
22.
 
23.
' die neue DACL ersetzt die alte DACL 
24.
sec.Properties_.Item("dacl") = newdacl 
25.
 
26.
' der geänderte Security Descriptor wird in die Datei zurückgeschrieben 
27.
retval = fileinstance.setsecuritydescriptor(sec) 
28.
 
29.
' erledigt 
30.
If retval = 0 Then 
31.
MsgBox "Neue Zugriffsrechte eingetragen" 
32.
Else 
33.
MsgBox "Konnte Zugriffsrechte nicht speichern." & vbCrLf _ 
34.
& "Möglicherweise fehlen Ihnen die Berechtigungen, oder die Datei existiert nicht." 
35.
End If 
36.
 
37.
Function GetFile(wmi, filename) 
38.
' öffnet eine Datei 
39.
Set GetFile = wmi.Get("Win32_LogicalFileSecuritySetting='" & filename & "'") 
40.
End Function 
41.
 
42.
Function CreateACE(wmi, AccessMask, AceType, objTrustee) 
43.
' legt einen ACE an 
44.
Set objAce = wmi.Get("Win32_Ace").SpawnInstance_ 
45.
objAce.Properties_.Item("AccessMask") = AccessMask 
46.
objAce.Properties_.Item("AceFlags") = 3 
47.
objAce.Properties_.Item("AceType") = AceType 
48.
objAce.Properties_.Item("Trustee") = objTrustee 
49.
Set CreateACE = objAce 
50.
End Function 
51.
 
52.
Function SetTrustee(wmi, account) 
53.
If Left(account,2) = "\\" Then 
54.
konto = Mid(account, 3) 
55.
Else 
56.
konto = account 
57.
End If 
58.
infos = Split(konto, "\") 
59.
If UBound(infos) = 0 Then 
60.
'SYS: Windows Script Host Runtime Library 
61.
Set wshnet = CreateObject("WScript.Network") 
62.
UserName = infos(0) 
63.
ComputerName = wshnet.ComputerName 
64.
Else 
65.
UserName = infos(1) 
66.
ComputerName = infos(0) 
67.
End If 
68.
 
69.
' legt ein Win32_Trustee-Objekt an 
70.
Set objTrustee = wmi.Get("Win32_Trustee").SpawnInstance_ 
71.
objTrustee.Domain = ComputerName 
72.
objTrustee.Name = UserName 
73.
 
74.
objTrustee.Properties_.Item("SID") = GetBinarySID(ComputerName, UserName) 
75.
Set SetTrustee = objTrustee 
76.
End Function 
77.
 
78.
Function GetBinarySID(ComputerName, UserName) 
79.
' ** ermittelt binäre SID eines Benutzerkontos 
80.
On Error Resume Next 
81.
Set wmi = GetObject("winmgmts:\\" & ComputerName) 
82.
If Err.number<>0 Then 
83.
MsgBox "Konnte \\" & ComputerName & " nicht erreichen!" 
84.
WScript.Quit 
85.
End If 
86.
On Error Goto 0 
87.
 
88.
wql = "select * from win32_account where name='" & UserName & "'" 
89.
Set result = wmi.ExecQuery(wql) 
90.
counter = 0 
91.
For each entry in result 
92.
counter = counter + 1 
93.
sid = entry.SID 
94.
Next 
95.
If counter = 0 Then 
96.
MsgBox "Konnte \\" & ComputerName & "\" & UserName & " nicht erreichen!" 
97.
WScript.Quit 
98.
ElseIf counter>1 Then 
99.
MsgBox "Zweideutiger Kontoname." 
100.
WScript.Quit 
101.
End If 
102.
 
103.
Set obj = wmi.Get("Win32_SID.SID=""" & sid & """") 
104.
GetBinarySID = obj.Properties_.Item("BinaryRepresentation").Value 
105.
End Function
Bitte warten ..
Mitglied: bastla
17.09.2007, aktualisiert 18.10.2012
Hallo saibonaut!

Frage zwischendurch: Wenn es anscheinend nur darum geht, eine Datei / einen Ordner auszuwählen, warum dann nicht einfach per Standard-Dialog (siehe zB http://www.administrator.de/forum/vbs-ordnerauswahl-und-dateiauswahl-mi ... bzw den dort verlinkten Beitrag)?

Grüße
bastla
Bitte warten ..
Ähnliche Inhalte
Webentwicklung
gelöst HTML Output in eine txt Datei mit VisualBasicScript (2)

Frage von coca22COCA zum Thema Webentwicklung ...

JavaScript
Datei auf Sharepoint über HTML ablegen (5)

Frage von 94451 zum Thema JavaScript ...

Linux
gelöst URL und Username aus HTML-Datei extrahieren - sed, grep (4)

Frage von plutowitsch zum Thema Linux ...

VB for Applications
gelöst VBS Datei Auswahl Dialog (5)

Frage von 133202 zum Thema VB for Applications ...

Neue Wissensbeiträge
Windows Server

Umstellung SHA 1 auf SHA 2 - Migration der CA von CSP auf KSP

Tipp von Badger zum Thema Windows Server ...

Windows 10

Quato DTP94 unter Windows 10 x64 installieren und verwenden

Anleitung von anteNope zum Thema Windows 10 ...

Windows 10

Win10 1703 und Nutzerkennwörter bei Ersteinrichtung - erstaunliche Erkenntnis

(15)

Erfahrungsbericht von DerWoWusste zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Internet
gelöst Jeden morgen Internet-Probleme (56)

Frage von pjrtvly zum Thema Internet ...

Server-Hardware
HP DL380 G7: Booten vom USB via USB 3.1-PCI-e Karte möglich? (24)

Frage von Paderman zum Thema Server-Hardware ...

LAN, WAN, Wireless
gelöst IP Adressen - Modem - Switch - Accesspoint (22)

Frage von teuferl82 zum Thema LAN, WAN, Wireless ...

Windows 7
Bluesreens unternehmensweit (22)

Frage von SYS64738 zum Thema Windows 7 ...