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

Suchen ersetzen vbs script ab Zeichen X

Frage Entwicklung Batch & Shell

Mitglied: svenac2010

svenac2010 (Level 1) - Jetzt verbinden

20.06.2013, aktualisiert 18:32 Uhr, 1946 Aufrufe, 7 Kommentare

Hallo,
ich verwendet folgendes Script um in einer CSV Datei Daten ersetzen zu lassen

01.
Dim objFso 
02.
 Dim objWshShell 
03.
 Set objFso = WScript.CreateObject("Scripting.FileSystemObject") 
04.
 Set objWshShell = WScript.CreateObject("WScript.Shell") 
05.
 
06.
 Dim dieDatei, Rueckgabe, dateiAngabe, Servername 
07.
 
08.
 dateiAngabe = "C:\temp\DTAG.csv" 
09.
  
10.
Set dieDatei = objFso.OpenTextFile(dateiAngabe, 1) 
11.
 Rueckgabe=Replace(dieDatei.ReadAll,"ISBN","DATG") 
12.
 Set dieDatei = objFso.OpenTextFile(dateiAngabe, 2) 
13.
 dieDatei.Write(Rueckgabe) 
14.
  
15.
 Set dieDatei = objFso.OpenTextFile(dateiAngabe, 1) 
16.
 Rueckgabe=Replace(dieDatei.ReadAll,"BTST","") 
17.
 Set dieDatei = objFso.OpenTextFile(dateiAngabe, 2) 
18.
 dieDatei.Write(Rueckgabe) 
19.
  
20.
  
21.
dieDatei.Close
Es wird nach ISBN gesucht und durch "DATG" ersetzt,
funktioniert auch soweit ganz gut,
nur was muss ich verändern, wenn er alles AB dem Zeichen"BTST" löschen soll und nicht wie in diesem Fall ersetzen durch ""

Über eine Information wäre ich dankbar.
Mitglied: colinardo
20.06.2013 um 18:55 Uhr
hi svenac2010,
01.
Rueckgabe = Left(dieDatei.ReadAll,Instr(1,dieDatei.ReadAll,"BTST")+4)
Uwe
Bitte warten ..
Mitglied: Biber
20.06.2013 um 19:52 Uhr
[OT]

Moin colinardo,

is' sich ja ein guter Plan - außer wenn nun in der behandelten Datei mal kein String "BTST" gefunden wird.
Dann ist die "neue" Datei auch nur Left(dieDatei.ReadAll, 0 +4 ) Zeichen lang.

Geht mich ja nix an, aber Schattenparker wie ich würden vor lauter Angst noch eine IF-Abfrage "isdenn Instr(,,) > 0" drumherumwickeln.

Grüße
Biber
[/OT]
Bitte warten ..
Mitglied: colinardo
20.06.2013 um 20:04 Uhr
Klar, ging ja nur ums Prinzip ohne den üblichen Kladeradatsch =8-)
Grüsse Uwe
Bitte warten ..
Mitglied: bastla
20.06.2013 um 21:55 Uhr
Hallo svenac2010!

Noch als Anmerkung: Das zwischenzeitliche Schreiben und neuerliche Einlesen ist relativ sinnfrei - da der gesamte Dateiinhalt sich ja ohnehin schon in der Variablen "Rueckgabe" befindet, kann dieser einfach per
01.
M = "BTST" 
02.
P = InStr(Rueckgabe, M) 
03.
If  P > 0 Then Rueckgabe = Left(Rueckgabe, P + Len(M))
aufbereitet und dann wieder geschrieben werden ...

Grüße
bastla
Bitte warten ..
Mitglied: svenac2010
21.06.2013, aktualisiert um 07:58 Uhr
Hallo,

vielen Dank für die Rückmeldungen

erweiter ich meinen code mit den Zeilen von Bastla
passiert selber nichts, daraufhin habe ich den Code so erweitert

01.
Dim objFso 
02.
 Dim objWshShell 
03.
 Set objFso = WScript.CreateObject("Scripting.FileSystemObject") 
04.
 Set objWshShell = WScript.CreateObject("WScript.Shell") 
05.
 
06.
 Dim dieDatei, Rueckgabe, dateiAngabe, Servername 
07.
 
08.
 dateiAngabe = "C:\temp\DTAG.csv" 
09.
  
10.
Set dieDatei = objFso.OpenTextFile(dateiAngabe, 1) 
11.
 Rueckgabe=Replace(dieDatei.ReadAll,"ISBN","DATG") 
12.
 Set dieDatei = objFso.OpenTextFile(dateiAngabe, 2) 
13.
 dieDatei.Write(Rueckgabe) 
14.
 
15.
 
16.
 M = "BTST" 
17.
 P = InStr(Rueckgabe, M) 
18.
  Set dieDatei = objFso.OpenTextFile(dateiAngabe, 1) 
19.
  If  P > 0 Then Rueckgabe = Left(Rueckgabe2, P + Len(M)) 
20.
   Set dieDatei = objFso.OpenTextFile(dateiAngabe, 2) 
21.
   dieDatei.Write(Rueckgabe)   
22.
 
23.
diedatei.close
leert er mir die gesamte Datei bis auf die erste Zeile

an welcher Stelle ist hier der Fehler?

Gruß
Sven
Bitte warten ..
Mitglied: colinardo
21.06.2013, aktualisiert um 09:29 Uhr
Hallo Sven,
da du eine CSV-Datei erwähnst, ist der String in jeder Zeile vorhanden ?
poste uns doch bitte mal ein Beispiel aus der CSV ...

p.s.
korrigierter Code bei einmaligem vorhanden sein des Strings "BTST" in der Datei
01.
Set objFso = WScript.CreateObject("Scripting.FileSystemObject") 
02.
Set objWshShell = WScript.CreateObject("WScript.Shell") 
03.
dateiAngabe = "C:\temp\DTAG.csv" 
04.
Set dieDatei = objFso.OpenTextFile(dateiAngabe, 1) 
05.
Rueckgabe=Replace(dieDateiRead.ReadAll,"ISBN","DATG") 
06.
dieDatei.Close() 
07.
Set dieDatei = objFso.OpenTextFile(dateiAngabe, 2) 
08.
M = "BTST" 
09.
P = InStr(Rueckgabe, M) 
10.
If P > 0 Then Rueckgabe = Left(Rueckgabe, P + Len(M)) 
11.
dieDatei.Write(Rueckgabe)   
12.
dieDatei.Close()
Alternativ Code für das kürzen jeder Zeile ab dem String "BTST"
01.
Const ForReading = 1 
02.
Const ForWriting = 2 
03.
Set objFSO = CreateObject("Scripting.FileSystemObject") 
04.
filePath = "C:\temp\DTAG.csv"  
05.
Set objTextFileRead = objFSO.OpenTextFile(filePath, ForReading) 
06.
strFinal = "" 
07.
Do Until objTextFileRead.AtEndOfStream 
08.
    strNextLine = objTextFileRead.Readline 
09.
    If strNextLine <> "" Then 
10.
  		strSearch = "BTST" 
11.
  		intStringPosition = InStr(strNextline, strSearch) 
12.
  		If intStringPosition > 0 Then  
13.
  			strFinal = strFinal & Left(strNextLine,intStringPosition + Len(strSearch)) & vbCrLf  
14.
  		Else 
15.
  			strFinal = strFinal & strNextLine & vbCrLf  
16.
  		End if 
17.
    End if 
18.
Loop 
19.
objTextFileRead.Close() 
20.
Set objTextFileWrite = objFSO.OpenTextFile(filePath, ForWriting) 
21.
objTextFileWrite.Write(strFinal) 
22.
objTextFileWrite.Close()
Bitte warten ..
Mitglied: Biber
21.06.2013, aktualisiert um 09:20 Uhr
[OT]
@svenac2010
Da warte ich schon seit Bestehen des Beitrags drauf, endlich mein "works as designed" loswerden zu können. Ich dachte mir schon, dass du das "alles" aus "alles löschen ab String x" im Titel und Anforderungsbeschreibung nicht so wörtlich meinst.

@colinardo
In den beiden letzten Schnipseln haben wir nun - wie bei einer echten Teamarbeit - bei den Variablennamen alle denkbaren Namenskonventionen verewigt.
Von "dateiAngabe" und "Rueckgabe" über "strNextLine" und "FinalString" nach "M" und "P" bis zum zusammengedenglischten "dieDateiWrite".

Im normalen Unternehmensalltag würden wir es jetzt genau so produktiv setzen.

Grüße
Biber
[/OT]
Bitte warten ..
Neuester Wissensbeitrag
Festplatten, SSD, Raid

12TB written pro SSD in 2 Jahren mit RAID5 auf Hyper-VServer

Erfahrungsbericht von Lochkartenstanzer zum Thema Festplatten, SSD, Raid ...

Ähnliche Inhalte
VB for Applications
VBS Script zum versenden mehrerer Verknüpfungen zu Dateien per Lotus Notes

Frage von Sentinel87 zum Thema VB for Applications ...

Batch & Shell
gelöst VBS Script in eine Textdatei ausgeben (VBS mit Batch zusammenführen) (5)

Frage von Luuke257 zum Thema Batch & Shell ...

VB for Applications
gelöst VBS Script kann Prgramm nicht starten (15)

Frage von C.Boerner zum Thema VB for Applications ...

Windows Server
Aufgabenplanung bringt bei VBS Script immer 0x41301 (14)

Frage von 116480 zum Thema Windows Server ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (34)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

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

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...