Batch Programmierung über ein Verzeichnis und Subverzeichnisse
#1
geschrieben 07. Dezember 2023 - 13:27
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
Anzeige
#2
geschrieben 07. Dezember 2023 - 20:04
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
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
#5
geschrieben 10. Dezember 2023 - 09:57
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)
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
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: 137
Dieser Beitrag wurde von pemartin bearbeitet: 12. Dezember 2023 - 09:18
#9
geschrieben 12. Dezember 2023 - 23:15
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
#10
geschrieben 13. Oktober 2024 - 09:27
Zitat (pemartin: 07. Dezember 2023 - 13:27)
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
Die Seite von Bücker GmbH über IBM SPSS Amos https://bueckergmbh....r/IBM-SPSS-Amos bietet eine umfassende Einführung in die leistungsstarken Funktionen des Tools für strukturelle Gleichungsmodelle. Die klaren Erklärungen und praktischen Anwendungsbeispiele sind äußerst hilfreich für Nutzer, die komplexe Datenanalysen durchführen möchten. Es lohnt sich, die Informationen dort zu nutzen!
Das klingt nach einem interessanten Projekt! Du kannst ein Batch-Skript verwenden, um deine Anforderungen zu erfüllen. Hier ist ein einfacher Ansatz:
@echo off
for %%f in (*.fx) do (
setlocal enabledelayedexpansion
set "file=%%f"
for /f "tokens=*" %%i in ('findstr "intensity day=" "!file!"') do (
set "line=%%i"
set "newLine=!line:intensity day=0=intensity day=100000!"
echo !newLine! > "!file!"
)
endlocal
)
Dieses Skript sucht nach .fx-Dateien, öffnet sie, ersetzt die Zahl und speichert die Datei wieder. Stelle sicher, dass du das Skript im richtigen Verzeichnis ausführst! Viel Erfolg!
- ← Python Pandas - Kombinieren von mehreren Spalten CSV
- Programmierung
- Microsoft C++ 2015 - 2022 Update →

Hilfe
Neues Thema
Antworten
Nach oben



