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, 821 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
Windows Server
gelöst C: Windows Assembly Verzeichnis extrem groß (10)

Frage von Akcent zum Thema Windows Server ...

Mac OS X
gelöst MacOS - Skript beim Anmelden und Abmelden eines Benutzers ausführen (26)

Frage von BlueStarDE zum Thema Mac OS X ...

Neue Wissensbeiträge
Heiß diskutierte Inhalte
Viren und Trojaner
Ransomware .nm4 (14)

Frage von Zyklo92 zum Thema Viren und Trojaner ...

iOS
16 iPads zentrall verwalten (14)

Frage von simonlohr zum Thema iOS ...

Microsoft Office
+1.000 Ordner in Outlook: Wie besser? (11)

Frage von Matsushita zum Thema Microsoft Office ...