Hallo!
Versuche seit einigen Tagen eine Batch-Datei zu Programmieren:
Sie soll folgendes können:
- in einem Verzeichnis Dateien suchen die mit fx enden.
- Wenn es deine solche Datei gefunden hat soll es die Datei öffnen und in dieser Datei eine bestimmte Zeichenfolge finden "intensity day=".
- Anschließend die Zahl hinter dem "=" durch 100000 ersetzen.
- Die Datei wieder schließen und die nächste suchen.
Irgendwie komme ich nicht weiter.
Vielleicht hab ich es auch nur einfach falsch formuliert.
Vielen Dank
Gruss Peter
Seite 1 von 1
Batch Programmierung über ein Verzeichnis und Subverzeichnisse
Anzeige
#2
geschrieben 07. Dezember 2023 - 20:04
Diese Aufgabe bekommst du über ein UNIX-script gebacken, aber mit WIN-batch ?.
Wenn du kein Profi darin bist, droht eine Einweisung in die "Anstalt".
Spass beiseite:
Datei + String-suche, kein Problem.
Für das ersetzen habe ich in solchen Fällen grundsätzlich mit
einem in Hochsprache geschrieben Programm gearbeitet.
Wenn du kein Profi darin bist, droht eine Einweisung in die "Anstalt".
Spass beiseite:
Datei + String-suche, kein Problem.
Für das ersetzen habe ich in solchen Fällen grundsätzlich mit
einem in Hochsprache geschrieben Programm gearbeitet.
#3
geschrieben 08. Dezember 2023 - 09:23
Hallo!
Ich wäre an deiner entsprechenden Unterstützung interessiert!
Vielleicht können Sie mir eine entsprechenden Vorschlag machen.
Danke
Gruss Peter
Ich wäre an deiner entsprechenden Unterstützung interessiert!
Vielleicht können Sie mir eine entsprechenden Vorschlag machen.
Danke
Gruss Peter
#4
geschrieben 09. Dezember 2023 - 15:16
Was mal interessant wäre: Dein derzeitiger Script-Stand. ggf. finden wir ja Denkfehler darin.
#5
geschrieben 10. Dezember 2023 - 09:57
Hallo!
Klar gerne!
@echo off
setlocal enabledelayedexpansion
set "searchDir=E:\temp"
set "fileExt=fx"
set "searchString==125"
set "replaceString=Intensity Night=100"
cd /d "%searchDir%"
echo Durchsuche das Verzeichnis und Unterverzeichnisse nach Dateien mit Endung ".%fileExt%"...
for /r %%i in (*.%fileExt%) do (
set "filePath=%%i"
echo Durchsuche Datei: !filePath!
findstr /C:"%searchString%" "!filePath!" >nul
if !errorlevel! equ 0 (
echo Ersetze Eintrag in Datei: !filePath!
set "tempFile=!filePath!.tmp"
(
for /f "usebackq delims=" %%j in ("!filePath!") do (
set "line=%%j"
set "line=!line:%searchString%=%replaceString%!"
echo !line!
)
) > "!tempFile!"
move /y "!tempFile!" "!filePath!"
echo Datei geschlossen.
) else (
echo Eintrag nicht gefunden.
)
echo.
)
echo Durchsuchung abgeschlossen.
endlocal
So sieht die Batch-Datei aus!
Gruss Peter
Klar gerne!
@echo off
setlocal enabledelayedexpansion
set "searchDir=E:\temp"
set "fileExt=fx"
set "searchString==125"
set "replaceString=Intensity Night=100"
cd /d "%searchDir%"
echo Durchsuche das Verzeichnis und Unterverzeichnisse nach Dateien mit Endung ".%fileExt%"...
for /r %%i in (*.%fileExt%) do (
set "filePath=%%i"
echo Durchsuche Datei: !filePath!
findstr /C:"%searchString%" "!filePath!" >nul
if !errorlevel! equ 0 (
echo Ersetze Eintrag in Datei: !filePath!
set "tempFile=!filePath!.tmp"
(
for /f "usebackq delims=" %%j in ("!filePath!") do (
set "line=%%j"
set "line=!line:%searchString%=%replaceString%!"
echo !line!
)
) > "!tempFile!"
move /y "!tempFile!" "!filePath!"
echo Datei geschlossen.
) else (
echo Eintrag nicht gefunden.
)
echo.
)
echo Durchsuchung abgeschlossen.
endlocal
So sieht die Batch-Datei aus!
Gruss Peter
Dieser Beitrag wurde von pemartin bearbeitet: 10. Dezember 2023 - 10:06
#6
geschrieben 10. Dezember 2023 - 15:54
set "searchDir=E:\temp" set "fileExt=fx" set "searchString==125" set "replaceString=Intensity Night=100"
WENN mich meine müden augen nicht trügen sehe ich hier schon (ja ich bin etwas aus der Übung) Dinge die eigenlich so nicht sein dürfen....
set searchDir="E:\temp" set fileExt="fx" set searchString="125" set replaceString="Intensity Night=100"
dürfte mWn. ehr zum Ziel führen.
#7
geschrieben 11. Dezember 2023 - 13:29
Zitat (Stefan_der_held: 10. Dezember 2023 - 15:54)
dürfte mWn. ehr zum Ziel führen.
Das stimmt nicht, die Gänsefüßchen werden sogar so empfohlen, das doppelte Istgleich wird nur falsch sein
Interessant finde ich, einmal soll Intensity Day genannt, einmal Night, gesucht wird im Script aber nur nach 125 ?
#8
geschrieben 12. Dezember 2023 - 09:17
Hallo Leute!
Erstmal vielen Dank für die Hilfe bisher.
Ich habe mal die Datei hier angehängt um die es geht.
Normalerweise hat die eine Endung von "fx" und nicht "txt" (Nur umbenannt damit ich sie hier anhängen kann).
Diese beiden "Suchstellen" tauchen in manchen Datei 2-3x auf.
Vielleicht hilft das etwas zum Verständnis.
Vielen Dank
Gruss Peter
Erstmal vielen Dank für die Hilfe bisher.
Ich habe mal die Datei hier angehängt um die es geht.
Normalerweise hat die eine Endung von "fx" und nicht "txt" (Nur umbenannt damit ich sie hier anhängen kann).
Diese beiden "Suchstellen" tauchen in manchen Datei 2-3x auf.
Vielleicht hilft das etwas zum Verständnis.
Vielen Dank
Gruss Peter
Angehängte Datei(en)
-
SH_dynamic_light60_LCPH_Or.fx.txt (1,2K)
Anzahl der Downloads: 33
Dieser Beitrag wurde von pemartin bearbeitet: 12. Dezember 2023 - 09:18
#9
geschrieben 12. Dezember 2023 - 23:15
ich habe es von Link geklaut, vereinfacht und abgeändert, damit es Leerzeichen verarbeiten kann
ini.bat /i "Intensity Day" /v 2000 Datei123.fx
:: -------------------- :: ini.bat :: ini.bat /? for usage :: -------------------- @echo off setlocal enabledelayedexpansion goto begin :usage echo Usage: %~nx0 /i item /v value inifile echo; echo Take the following ini file for example: echo; echo [Config] echo password=1234 echo usertries=0 echo allowterminate=0 echo; echo; echo To change the "usertries" value to 5: echo %~nx0 /i usertries /v 5 inifile echo; goto :EOF :begin if "%~1"=="" goto usage for %%I in (item value section found) do set %%I= for %%I in (%*) do ( if defined next ( if !next!==/i set item=%%~I if !next!==/v set value=%%~I set next= ) else ( for %%x in (/i /v /s) do if "%%~I"=="%%x" set "next=%%~I" if not defined next ( set "arg=%%~I" if "!arg:~0,1!"=="/" ( 1>&2 echo Error: Unrecognized option "%%~I" 1>&2 echo; 1>&2 call :usage exit /b 1 ) else set "inifile=%%~I" ) ) ) for %%I in (item value inifile) do if not defined %%I goto usage if not exist "%inifile%" ( 1>&2 echo Error: %inifile% not found. exit /b 1 ) for /f "usebackq delims=" %%I in (`findstr /n "^" "%inifile%"`) do ( set "line=%%I" && set "line=!line:*:=!" echo(!line! | findstr /c:"%item%=" >NUL && ( 1>>"%inifile%.1" echo(%item%=%value% echo(change: !line!, --^> %item%=%value% ) || 1>>"%inifile%.1" echo(!line! ) if exist "%inifile%.1" move /y "%inifile%.1" "%inifile%">NUL
- ← Mit batch Programme aufrufen
- Programmierung
- Python Pandas - Kombinieren von mehreren Spalten CSV →
Thema verteilen:
Seite 1 von 1