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, 782 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
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (25)

Frage von M.Marz zum Thema Windows Server ...

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Windows 7
Verteillösung für IT-Raum benötigt (12)

Frage von TheM-Man zum Thema Windows 7 ...