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, 5411 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 ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

Ähnliche Inhalte
Batch & Shell
gelöst In Html-Datei per Batchdatei das Datum und die Uhrzeit eintragen (2)

Frage von Hakiegold zum Thema Batch & Shell ...

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

Frage von plutowitsch zum Thema Linux ...

HTML
gelöst Mit HTML Datei eine Textdatei auslesen (7)

Frage von Maffi zum Thema HTML ...

Heiß diskutierte Inhalte
Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

Microsoft Office
Keine Updates für Office 2016 (13)

Frage von Motte990 zum Thema Microsoft Office ...

Grafikkarten & Monitore
Tonprobleme bei Fernseher mit angeschlossenem Laptop über HDMI (11)

Frage von Y3shix zum Thema Grafikkarten & Monitore ...