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, 810 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 ..
Ähnliche Inhalte
Exchange Server
GPO - Logon-Skript wird nicht ausgeführt (4)

Frage von Der-Phil zum Thema Exchange Server ...

Batch & Shell
gelöst Powershell Skript Ordnerinhalt auflisten und per E-Mail verschicken (2)

Frage von xbast1x zum Thema Batch & Shell ...

Batch & Shell
gelöst PS: zugehörige Import-Dateien ins Verzeichnis der Log-Dateien verschieben (4)

Frage von Jenny82 zum Thema Batch & Shell ...

Neue Wissensbeiträge
Sicherheits-Tools

Sicherheitstest von Passwörtern für ganze DB-Tabellen

(1)

Tipp von gdconsult zum Thema Sicherheits-Tools ...

Peripheriegeräte

Was beachten bei der Wahl einer USV Anlage im Serverschrank

(9)

Tipp von zetboxit zum Thema Peripheriegeräte ...

Windows 10

Das Windows 10 Creators Update ist auf dem Weg

(6)

Anleitung von BassFishFox zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Batch & Shell
gelöst ZIP-Archive nach Dateien durchsuchen und Pfade ausgeben (33)

Frage von evinben zum Thema Batch & Shell ...

Router & Routing
Routingproblem in Homerouter-Kaskade mit Raspi (19)

Frage von Oldschool zum Thema Router & Routing ...

Server
Freenas schlechte Schreib Performance bei NFS (16)

Frage von janosch12 zum Thema Server ...

Windows Server
Fehler Vertrauensstellung im AD (14)

Frage von thomas-99 zum Thema Windows Server ...