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

Zeile in html finden und ersetzen

Frage Entwicklung Batch & Shell

Mitglied: haufeft

haufeft (Level 1) - Jetzt verbinden

01.06.2008, aktualisiert 04.06.2008, 4110 Aufrufe, 13 Kommentare

Guten Abend

Ich habe ein Batch mit dem ich eine zeile in eine html hinzufüge.

Nun bräuchte ich noch die Passende IF Abfrage

Ist die Zeile schon vorhanden== erseten.

Danke

Die Batch
01.
@echo off & setlocal  
02.
 
03.
 
04.
set "Datei=flyout2.html"  
05.
 
06.
set "Suche=function"  
07.
 
08.
set "Zufuege=var pw = 0000;" 
09.
 
10.
 
11.
 
12.
 
13.
  
14.
set "TempTxt=%temp%\TT.txt"  
15.
copy "%Datei%" "%TempTxt%">nul  
16.
set Zeile=0  
17.
for /f "delims=:" %%i in ('findstr /n /i /b /c:"%Suche%" "%TempTxt%"') do set Zeile=%%i  
18.
del "%Datei%"  
19.
if %Zeile%==0 goto :Rest  
20.
for /f "tokens=1* delims=:" %%i in ('findstr /n $ "%TempTxt%"') do if %%i leq %Zeile% echo.%%j>>"%Datei%"  
21.
echo %Zufuege%>>"%Datei%"  
22.
:Rest  
23.
more +%Zeile% "%TempTxt%">>"%Datei%"
Mitglied: bastla
01.06.2008 um 23:45 Uhr
Hallo haufeft!

Wenn ich das richtig interpretiere, soll die Zeile
01.
var pw = 0000;
nach der einzigen Zeile mit dem Zeilenanfang "function" in der Datei stehen - egal, ob erstere noch nicht vorhanden war oder vorher anders lautete.

Soferne diese Zeile als einzige mit
01.
var pw = 
beginnt, müsstest Du eigentlich nur eine Zeile
01.
set "Entferne=var pw = "
am Anfang des Batches (etwa in Zeile 10) hinzufügen und die letzte Zeile (23) ändern auf:
01.
more +%Zeile% "%TempTxt%"|findstr /v /i /b /c:"%Entferne%">>"%Datei%"
Grüße
bastla
Bitte warten ..
Mitglied: haufeft
02.06.2008 um 00:12 Uhr
Danke Bastla es geht^^ 1a wie immer bei Dir
Bitte warten ..
Mitglied: haufeft
02.06.2008 um 20:05 Uhr
Hallo und Danke an Biber
Hab ein gleiches neues Problem

Ich wollte mit dem Batch an eine bestimmt stelle in meinem Form eine value setzen, leider versage ich schon bei der suche....

hier mal die html :

01.
<form method="post" onsubmit="document.location.href='teamspeak://'+this.ippo.value+'/?nickname='+this.name.value+'?loginname='+this.lname.value+'?password='+this.pw.value;return false"> 
02.
<table border="1" id="flashingborder" cellspacing="7"> 
03.
        <tr> 
04.
  <td>Nickname:</td> 
05.
<td><input type="text" name="name" size="12" maxlenght="35 "value="Nick"></td> 
06.
</tr> 
07.
<tr> 
08.
<td>Login Name:</td> 
09.
                <td><input type="text" name="lname" size="12" maxlenght="35"></td> 
10.
<td>Nur für Registrierte User Nötig</td> 
11.
 
12.
        </tr> 
13.
 
14.
<tr> 
15.
<td>Passwort:</td> 
16.
                <td><input type="password" name="pw" size="12" maxlenght="35"></td> 
17.
 
18.
        </tr> 
19.
<tr> 
20.
<td>IP und PORT:</td> 
21.
                <td><input type="text" name="ippo" value="xx.xx.xx.xx:xxxx" size="18" maxlenght="65" onfocus="if(this.value == 'xx.xx.xx.xx:xxxx') this.value='';" onblur="if (this.value=='') this.value='Vorgabetext';></td> 
22.
 
23.
        </tr> 
24.
 
25.
        <tr> 
26.
                <td colspan="2"> <center> 
27.
                <input style="width:60px;height:24px" type="submit" name="submit" value="Einlogen"><button style="width:140px;height:24px" align="center" onclick="ts2s()">Permanent TS2 Login</button></a> 
28.
</td> 
29.
        </tr> 
30.
</table> 
31.
</form>


Ich wollte z.b bei <input name="name" die value"dein name" per batch setzen und sollte sie vorhanden sein auch entfernen.
das wollte ich bei jedem <input> machen natürlich auch mit verschiedenen values.
@bastla hoffe du kannst mir da helfen??
das ist nur der teil der html der bearbeitet werden soll.

danke
Bitte warten ..
Mitglied: bastla
02.06.2008 um 20:59 Uhr
Hallo haufeft!

Mit der HTML-typischen Ansammlung von "<", ">" und auch noch Anführungszeichen ist zumeist der Punkt erreicht, wo ein Lösungsversuch mit Batch aufhört Spaß zu machen ...

... vor allem, wenn Du als Vergleich eine VBScript-Version betrachtest:
01.
'Ersetzen.vbs 
02.
F = "D:\flyout2.html" 
03.
Von = "<input type=""text"" name=""name""" 
04.
Nach = "<input type=""text"" name=""dein name""" 
05.
 
06.
Set fso=CreateObject("Scripting.FileSystemObject") 
07.
T = fso.OpenTextFile(F).ReadAll 
08.
fso.OpenTextFile(F, 2, True).Write Replace(T, Von, Nach)
Hier musst Du nur darauf achten, die Werte für "Von" und "Nach" in Anführungszeichen einzuschließen und innerhalb der beiden Texte jedes Anführungszeichen zu verdoppeln.

Wegen der Menge an Anführungszeichen ist übrigens eine Version mit Parameterübergabe (der Werte für "Von" und "Nach") etwas mühsam zu realisieren; dies gilt nicht für den Dateinamen, sodass also etwa ein Aufruf aus einer Batch-"for"-Schleife problemlos vorgenommen werden könnte.

Da es in Deiner Beispieldatei keine Stelle mit
01.
<input name="name"
gibt, war ich so frei, zur Demo die Alternative
01.
<input type="text" name="name"
zu verwenden ...

Vielleicht hätte aber auch schon
01.
Von = """name""" 
02.
Nach = """dein name"""
genügt - aber es gilt (wie immer beim Suchen) auch hier: je länger der Suchbegriff, desto genauer das Ergebnis.

Grüße
bastla
Bitte warten ..
Mitglied: haufeft
03.06.2008 um 07:40 Uhr
Hallo Bastla
mit VBS kenne ich mich nicht aus aber es funktioniert^^

name="name" ist ein fester wert.

ich müsste schon value="tralala" ändern.

das problem das value"tralala" das "tralala" sich ändert und wenn ich den script starte wissen müsste was da in der value steht sonst kann ich es ja nicht ändern.
wollte das die batch frägt:
name:
ip
loginame
passwort
und das dan in die html in das jeweilige value schreibt.
so
01.
<td><input type="text" name="name" size="12" maxlenght="35" value="Nick"></td>
01.
<td><input type="text" name="name" size="12" maxlenght="35" value="haufe"></td>
sollte es zu viel arbeit sein lass es..

Vielen Dank
Bitte warten ..
Mitglied: bastla
03.06.2008 um 08:05 Uhr
Hallo haufeft!

Schematisch könnte das so aussehen:
01.
'Ersetzen.vbs 
02.
F = "D:\flyout2.html" 
03.
 
04.
Von = Array("value=""Name""", _ 
05.
            "value=""IP""", _ 
06.
            "value=""Nick""", _ 
07.
            "value=""Pass""") 
08.
			 
09.
NName = InputBox("Name:") 
10.
NIP = InputBox("IP:") 
11.
NLogin = InputBox("Login:") 
12.
NPass = InputBox("Passwort:") 
13.
 
14.
Nach = Array("value=""" & NName & """", _ 
15.
             "value=""" & NIP & """", _ 
16.
             "value=""" & NLogin & """", _ 
17.
             "value=""" & NPass & """") 
18.
  
19.
Set fso=CreateObject("Scripting.FileSystemObject") 
20.
T = fso.OpenTextFile(F).ReadAll 
21.
For i = 0 To UBound(Von) 
22.
    T = Replace(T, Von(i), Nach(i)) 
23.
Next 
24.
fso.OpenTextFile(F, 2, True).Write T
Die Reihenfolge (und Anzahl) der Angaben in "Von" und "Nach" muss übereinstimmen, wobei in "Von" jeweils der Platzhalter der Vorlage angeführt ist.

Die Eingabe per "InputBox" ließe sich noch etwas ansprechender gestalten, indem ein mehzeiliger Text und ev noch ein Fenstertitel festgelegt wird; auch die Vorgabe eines Defaultwertes wäre möglich, aber hier vermutlich nicht sinnvoll. Eine entsprechende Zeile sähe dann so aus:
01.
NIP = InputBox("Bitte geben Sie die IP" & vbCrLF & vbCrLF "hier ein:", _ 
02.
               "IP-Eingabe", _ 
03.
               "127.0.0.1")
Grüße
bastla
Bitte warten ..
Mitglied: haufeft
03.06.2008 um 16:39 Uhr
HUI ES GEHT DIKES DANKE AN bastla

nur noch ein problem
nachdem die vbs gestartet worden ist ändert sich ja die value somit auch die such array.

gibt es eine möglichkeit das die eingaben auch in die vbs geschrieben werden so das ich sie mehrmals verwenden kann ohne die datei direkt zu bearbeiten.

hoffe das ist verständlich was ich möchte?

also wenn ich in die inputbox meine eingabe mache z.b name = haufe ändert sich die value in der html ja auf value="haufe" also muss sich auch Von = Array("value=""Name""", _ in
Von = Array("value=""Haufe""", _ ändern.

ist das machbar?

mfg
haufe
Bitte warten ..
Mitglied: bastla
03.06.2008 um 16:57 Uhr
Hallo haufeft!

Ohne den Hintergrund der ganzen Aktion zu kennen, frage ich mich (bzw jetzt Dich ), ob Du vielleicht "indivualisierte" Versionen immer der gleichen Ausgangsdatei benötigst?

In diesem Fall müsste eigentlich nur noch nach dem Namen (der Pfad könnte vielleicht konstant sein, und der Typ ".html" kann automatisch ergänzt werden) der Zieldatei gefragt werden, und es könnte, anstatt in der Quelldatei die Ersetzung vorzunehmen, einfach eine neue Datei erstellt werden. Als (ungetesteter) Ersatz für die Zeile 24 sähe das so aus:
01.
Pfad = "D:\Dein Pfad" 
02.
Neu = InputBox("Bitte den Dateinamen eingeben:", "Dateiname", "Defaultname") 
03.
Do Until Neu = "" Or Not fso.FileExists(Pfad & "\" & Neu & ".html") 
04.
    Neu = InputBox("Datei bereits vorhanden - bitte neu eingeben:", "Dateiname", Neu) 
05.
Loop 
06.
If Neu = "" Then 
07.
    WScript.Echo "Datei wurde nicht erstellt." 
08.
    WScript.Quit 
09.
Else 
10.
    fso.OpenTextFile(Pfad & "\" & Neu & ".html", 2, True).Write T 
11.
End If
Wenn Du das Eingabefenster einfach schließt bzw nichts eingibst, wird das Script beendet, ansonsten wird die Existenz einer gleichnamigen Zieldatei überprüft, um ein Überschreiben zu vermeiden und der (bereits vorhandene) Dateiname zum Editieren angeboten.
Oder liege ich mit meiner Überlegung ganz falsch? Dann müssten die aktuellen Werte aber sinnvoller Weise in einer Textdatei zwischengespeichert werden, um auch beim nächsten Aufruf des Scripts noch zur Verfügung zu stehen.

Grüße
bastla
Bitte warten ..
Mitglied: haufeft
03.06.2008 um 18:32 Uhr
hallo bastla

brauche nur eine datei die ausgangsdatei flyout2 die im gleichen ordner wie die vbs ist.

die variablen in der datei muss ich immer wieder füllen das ist ein versuch eines progamm logins das ich dann weiter gebe

also wie gesagt muss immer nur die value ändern.

also jetzt die vbs so das ich imme wieder die gleiche datei mit der vbs bearbeiten kann.
darf ruhig auch ne txt da sein mit den angaben

danke dir

EDIT:

nach dem ich aufgehört habe zu schlafen DANKE bastla für deine super hilfe
Bitte warten ..
Mitglied: haufeft
03.06.2008 um 20:27 Uhr
noch ein nachtrag:

wie kann ich system variablen wie %username% setzen für pfadangaben???
Bitte warten ..
Mitglied: bastla
03.06.2008 um 21:14 Uhr
Hallo haufeft!

Es gibt verschiedene Möglichkeiten dafür - allgemein kannst Du Systemvariablen so auslesen:
01.
set WshShell = WScript.CreateObject("WScript.Shell") 
02.
UserName = WshShell.ExpandEnvironmentStrings("%Username%")
Falls Du mehrere der Variablen auslesen willst, immer nur die zweite Zeile (angepasst) verwenden - die erste Zeile ist nur einmal am Anfang des Scripts erforderlich.

Grüße
bastla
Bitte warten ..
Mitglied: haufeft
04.06.2008 um 08:59 Uhr
hallo bastla

also ich bin zu doof für das!!!

ich habe das jetzt zum testen mal so gemacht:

01.
 
02.
set WshShell = WScript.CreateObject("WScript.Shell") 
03.
 
04.
UserName = WshShell.ExpandEnvironmentStrings("%UserName%") 
05.
Wscript.Echo  "UserName"
aber kommt nur UserName
Bitte warten ..
Mitglied: bastla
04.06.2008 um 10:13 Uhr
Hallo haufeft!

Wenn Du Anführungszeichen verwendest, weist Du Basic damit an, den dazwischen stehenden Text als Konstante zu betrachten und (in diesem Fall) einfach auszugeben.

Wenn Du nur
01.
WScript.Echo UserName
schreibst, sucht der Interpreter nach einer Variablen dieses Namens, findet sie in diesem Fall auch und gibt deren Inhalt aus.

Um mehrere "Textbausteine" (Konstante oder Variable) zu verknüpfen, verwende dafür ein "&" - Beispiel:
01.
set WshShell = WScript.CreateObject("WScript.Shell") 
02.
 
03.
UserName = WshShell.ExpandEnvironmentStrings("%UserName%") 
04.
UserDatei = "D:\Dein Pfad" & "\" & UserName & ".txt" 
05.
WScript.Echo UserDatei
Grüße
bastla
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
gelöst Poweshell Script soll String ersetzen und die leere Zeile löschen (4)

Frage von Mars123 zum Thema Batch & Shell ...

Batch & Shell
gelöst Powershell - In Textdatei suchen und ersetzen (5)

Frage von Raaja89 zum Thema Batch & Shell ...

Windows Netzwerk
Windows Server 2003 SBS Netzwerk durch neuen Server Ersetzen (9)

Frage von MultiStorm zum Thema Windows Netzwerk ...

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

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

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

Frage von Unwichtig zum Thema Netzwerkmanagement ...