kinggunta
Goto Top

Wert in Variable suchen / Variable ändern

Hallo Leute!

Ich habe in einer Batchdatei eine Variable die so Aufgebaut ist:


xyzxxxxzyzyzyz (37373) xxsxsxsx scsc


Jetzt suche ich einen Befehl der alles was hinter der letzten Klammer steht abschneidet.

Also so: xyzxxxxzyzyzyz (37373)


Die Schwierigkeit dabei ist dass die Stellen vor und nach der Klammer einmal mehr und einmal weniger sind.
Alles was ich habe ist immer diese Klammer zu Schluss ")"

Und alles dahinter soll eben abgeschnitten werden.


Bitte HILFE!

Danke
KingGunta

Content-Key: 51153

Url: https://administrator.de/contentid/51153

Printed on: April 24, 2024 at 17:04 o'clock

Member: bastla
bastla Feb 08, 2007 at 15:28:11 (UTC)
Goto Top
Hallo kinggunta!

Wenn Du so laut um Hilfe rufst, muss ich natürlich etwas versuchen:
set "Drucker=HP Deskjet 840 (PC1) in Sitzung 1"  
Echo WScript.Echo Left(WScript.Arguments(0), InstrRev(WScript.Arguments(0),")"))> "%temp%\GetPart.vbs"  
for /f "delims=" %%i in ('cscript //nologo "%temp%\GetPart.vbs" "%Drucker%"') do set "Dr=%%i"  
del "%temp%\GetPart.vbs"  
echo %Dr%
(Erste und letzte Zeile zu Demozwecken)

Grüße
bastla
Member: kinggunta
kinggunta Feb 08, 2007 at 15:46:53 (UTC)
Goto Top
Hallo bastla!

Danke für Deine Antwort!
Ich bin echt schon am verzweifeln. ;-(
Ich glaube du bist der einzige der mit weiterhelfen kann face-wink

Habe bis jetzt folgendes Script selbst gebaut:


on error resume next
Msgbox Printerliste

Function Printerliste()
Set shell = CreateObject("Shell.Application")
Set folder = shell.NameSpace(4)
Printerliste = vbcrlf

For Each item In folder.Items

If item.Name <> "Drucker hinzufügen" Then

arrArtikel = Split(item.Name, ")")

Printerliste = Printerliste & arrArtikel(0) & vbcrlf

End If

Next
End Function


Alles hergeleitet aus diesem Skript:

on error resume next
Bsp = ""
Msgbox Printerliste

Function Printerliste()
Set shell = CreateObject("Shell.Application")
Set folder = shell.NameSpace(4)
Printerliste = "Das sind alle verfügbaren Drucker! Bitte genaue Schreibweise beachten!" & vbcrlf

For Each item In folder.Items
If item.Name <> "Neuer Drucker" Then
Printerliste = Printerliste & item.Name & vbcrlf
Bsp = item.Name
End If
Next
End Function

Printerwechsel Inputbox("Welcher Drucker soll Standarddrucker werden?" & vbcrlf _
& Printerliste,vbQuestion,Bsp)

Function Printerwechsel(Printer)
Set shell = CreateObject("Shell.Application")
Set folder = shell.NameSpace(4)

For Each item In folder.Items
If item.Name = Printer Then item.InvokeVerb "Als S&tandard definieren"
Next
End Function

Msgbox "Aus der Registry ausgelesener Standarddrucker : " & StandardPrinter
Function StandardPrinter()
Set wshshell = CreateObject("Wscript.Shell")

key = "HKEY_LOCAL_MACHINE\Config\0001\System\CurrentControlSet\Control\Print\Printers\Default"

StandardAlt = wshshell.RegRead(key)
StandardPrinter = StandardAlt
End Function


Msgbox "Infos des Networkobjectes: " & vbcrlf & NetworkDrucker


Function NetworkDrucker()
Set Netzwerk = CreateObject("Wscript.Network")
Antwort = Msgbox("Soll der Standarddrucker mal mit dem Networkobject gewechselt werden?",vbyesNo+VBQuestion)
if Antwort = vbyes then Netzwerk.setDefaultPrinter Inputbox("Printer-Namen eingeben! " & Printerliste,vbQuestion,Bsp)
Domaen = Netzwerk.UserDomain
UName = Netzwerk.UserName
CName = Netzwerk.ComputerName
Set ndcollection = Netzwerk.EnumPrinterConnections
For Each nd In ndcollection
ndListe = ndListe & nd & Chr(13) & Chr(10)
Next
Info = ""
Info = Info & "User-Domain: " & Domaen & Chr(13) & Chr(10) _
& "User-Name: " & UName & Chr(13) & Chr(10) _
& "Computer-Name: " & CName & Chr(13) & Chr(10) _
& Chr(13) & Chr(10) & Chr(13) & Chr(10) _
& "Permanente Netzwerk_Drucker Verbindungen:" & Chr(13) & Chr(10) _
& Chr(13) & Chr(10) _
& ndListe & Chr(13) & Chr(10)
NetworkDrucker = Info
End Function


Möchte jetzt nur noch die Liste an Drucker die ich in die Massagebox ausgebe dazu verwenden
um bei die bestehenden Druckernamen zu ändern.

Allerdings schaffs ich nicht.

Bitte Hilfe mir!!
Member: bastla
bastla Feb 08, 2007 at 16:01:09 (UTC)
Goto Top
Hallo kinggunta!

Kannst Du bitte etwas genauer ausführen (vielleicht in einem neuen Thema?), was Du benötigst (Batch ja denn wohl eher nicht mehr face-wink)?

Grüße
bastla
Member: kinggunta
kinggunta Feb 08, 2007 at 16:11:21 (UTC)
Goto Top
Servus bastla!

Ich hab ein neues Thema eröffnet:
"Drucker mit VBS ubenennen"


Danke
KingGunta
Member: Biber
Biber Feb 08, 2007 at 17:12:39 (UTC)
Goto Top
Na ja,

auch wenn das Thema eigentlich schon abgefrühstückt ist... eine Fussnote noch

(=18:08:30  D:\temp=)
>set "Drucker=HP Deskjet 840 (PC1) in Sitzung 1"  
(=18:08:43  D:\temp=)
>for /f "tokens=1-3 delims=()" %i in ("%Drucker%") do @echo part1[%i] part2[%j] part3[%k]  
part1[HP Deskjet 840 ] part2[PC1] part3[ in Sitzung 1]
(=18:09:15  D:\temp=)
>for /f "delims=(" %i in ("%Drucker%") do @echo Drucker is' %i  
Drucker is' HP Deskjet 840  
(=18:10:05  D:\temp=)
>for /f "delims=)" %i in ("%Drucker%") do @echo Drucker is' %i)  
Drucker is' HP Deskjet 840 (PC1)  

Gruss Biber