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

Find und Replace Skript für Verzeichnis

Frage Entwicklung Batch & Shell

Mitglied: Fantomas741

Fantomas741 (Level 1) - Jetzt verbinden

15.12.2014 um 11:47 Uhr, 806 Aufrufe, 3 Kommentare

Hallo Leute,

zu diesem Thema gibt es ja schon ein paar Beiträge, aber meine "Batch" Kenntnisse reichen nicht aus um diese zu verstehen bzw. auf meine Bedürfnisse anzupassen, ich wollte meine Frage dort jetzt auch nicht reinstellen da der letzte Beitrag von 2011 ist und vielleicht gibts auch ne schöne Lösung mit VBS

Also ich beschreib mal kurz meine Problemstellung:

Ich habe ein Verzeichnis ...\res dort befinden sich mehere (100+) dateien mit den unterschiedlichsten Dateinamen aber immer gleicher Dateiendung...

1. ich müsste also alle Dateien dieses Typs öffnen und reingucken

im Prinzip sind es Textdateien, dort werden Parameter definiert, ich möchte diese Parameter auf einen bestimmten Wert nämlich 0 setzen

Beispiel:

Datei 1:
Parameter = 50

Neuer wert soll 0 sein,

Datei 2:
Parameter = 35

Neuer wert soll 0 sein

womit ich bei 2. wäre: Wenn der Wert bei Parameter nicht 0 ist dann setze ihn auf 0
3. Die datei dann Speichern (Überschreiben)

Vielen dank schonmal vorab für eure Hilfe,
LG Fantomas
Mitglied: colinardo
15.12.2014, aktualisiert um 16:27 Uhr
Hallo Fantomas,
gibts zwar schon etliche Beispiel hier im Forum, aber hier noch mal eins mit Powershell:
01.
gci "C:\ordner\*.txt" | %{ 
02.
    $content = gc $_.Fullname | out-string 
03.
    if (([regex]::match($content,'Parameter = (\d+)').Groups[1].Value) -gt 0){ 
04.
        $content -replace '(Parameter = )(\d+)','${1}0' | Set-Content $_.Fullname -Force 
05.
06.
}
Oder wenn's VBS sein muss:
01.
Const ORDNER = "C:\ordner" 
02.
Const EXTENSION = "txt" 
03.
Set fso = CreateObject("Scripting.Filesystemobject") 
04.
Set regex = CreateObject("vbscript.regexp") 
05.
regex.Global = False: regex.IgnoreCase = True: regex.MultiLine = True 
06.
regex.Pattern = "(Parameter)\s*=\s*(\d+)" 
07.
 
08.
For Each file In fso.GetFolder(ORDNER).Files 
09.
	If LCase(fso.GetExtensionName(file.Name)) = LCase(EXTENSION) Then 
10.
		strContent = fso.OpenTextFile(file.Path,1).ReadAll() 
11.
		set matches = regex.Execute(strContent) 
12.
		If matches.Count > 0 Then 
13.
			If CDbl(matches(0).submatches(1)) > 0 Then 
14.
				fso.OpenTextFile(file.Path,2).Write(regex.Replace(strContent,"$1 = 0")) 
15.
			End If  
16.
		End If 
17.
	End If 
18.
Next 
19.
MsgBox "Finished" 
20.
Set fso = Nothing 
21.
Set regex = Nothing
Grüße Uwe
Bitte warten ..
Mitglied: Endoro
17.12.2014 um 09:17 Uhr
Hey,
vielfach getestete "Profiscripte" ohne Fremdsoftware:

FindRepl.bat:New regex utility to search and replace strings
JREPL.BAT - regex text processor

Gruß, Endoro
Bitte warten ..
Mitglied: Fantomas741
19.12.2014 um 12:38 Uhr
Super ich danke euch, werde ich am Wochende mal Testen !!

Gruß
Fanto
Bitte warten ..
Neuester Wissensbeitrag
Off Topic

"Ich habe nichts zu verbergen"

(2)

Erfahrungsbericht von FA-jka zum Thema Off Topic ...

Ähnliche Inhalte
Windows Update
Powershell WSUS Automation Skript - PoshWSUS

Frage von sigisigi zum Thema Windows Update ...

Windows Server
gelöst IIS Benutzerdefinierte Sitedelegierung mittels Skript (16)

Frage von EditorialBagPipe zum Thema Windows Server ...

Windows Netzwerk
gelöst Powershell skript zum Auslesen der im AD angemeldeten User (2)

Frage von jan.kleinel zum Thema Windows Netzwerk ...

Heiß diskutierte Inhalte
Linux Netzwerk
gelöst DHCP vergibt keine Adressen (32)

Frage von Maik82 zum Thema Linux Netzwerk ...

Apache Server
gelöst Lets Encrypt SSL mit Apache2 (20)

Frage von banane31 zum Thema Apache Server ...

CPU, RAM, Mainboards
Kaufberatung für mind. 8 verschiedene HighEnd-Mainboards (20)

Frage von yperiu zum Thema CPU, RAM, Mainboards ...

Mac OS X
Mac kann nicht im LAN pingen alle anderen schon (14)

Frage von smartino zum Thema Mac OS X ...