WinFuture-Forum.de: Batch Programmierung über ein Verzeichnis und die Subverzecihnisse - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Batch Programmierung über ein Verzeichnis und die Subverzecihnisse


#1 Mitglied ist offline   pemartin 

  • Gruppe: Mitglieder
  • Beiträge: 6
  • Beigetreten: 09. März 23
  • Reputation: 0

geschrieben 07. Dezember 2023 - 13:27

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
0

Anzeige



#2 Mitglied ist offline   Shannon 

  • Gruppe: aktive Mitglieder
  • Beiträge: 130
  • Beigetreten: 12. Februar 13
  • Reputation: 11
  • Geschlecht:unbekannt

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.
0

#3 Mitglied ist offline   pemartin 

  • Gruppe: Mitglieder
  • Beiträge: 6
  • Beigetreten: 09. März 23
  • Reputation: 0

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
0

#4 Mitglied ist offline   Stefan_der_held 

  • Gruppe: Offizieller Support
  • Beiträge: 14.284
  • Beigetreten: 08. April 06
  • Reputation: 884
  • Geschlecht:Männlich
  • Wohnort:Dortmund NRW
  • Interessen:Alles wo irgendwie Strom durchfließt fasziniert mich einfach weswegen ich halt Elektroinstallateur geworden bin :)

geschrieben 09. Dezember 2023 - 15:16

Was mal interessant wäre: Dein derzeitiger Script-Stand. ggf. finden wir ja Denkfehler darin.
0

#5 Mitglied ist offline   pemartin 

  • Gruppe: Mitglieder
  • Beiträge: 6
  • Beigetreten: 09. März 23
  • Reputation: 0

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

Dieser Beitrag wurde von pemartin bearbeitet: 10. Dezember 2023 - 10:06

0

#6 Mitglied ist offline   Stefan_der_held 

  • Gruppe: Offizieller Support
  • Beiträge: 14.284
  • Beigetreten: 08. April 06
  • Reputation: 884
  • Geschlecht:Männlich
  • Wohnort:Dortmund NRW
  • Interessen:Alles wo irgendwie Strom durchfließt fasziniert mich einfach weswegen ich halt Elektroinstallateur geworden bin :)

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.
0

#7 Mitglied ist offline   MasterP82 

  • Gruppe: aktive Mitglieder
  • Beiträge: 221
  • Beigetreten: 30. Juni 12
  • Reputation: 10

geschrieben 11. Dezember 2023 - 13:29

Beitrag anzeigenZitat (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 ?
0

#8 Mitglied ist offline   pemartin 

  • Gruppe: Mitglieder
  • Beiträge: 6
  • Beigetreten: 09. März 23
  • Reputation: 0

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

Angehängte Datei(en)


Dieser Beitrag wurde von pemartin bearbeitet: 12. Dezember 2023 - 09:18

0

#9 Mitglied ist offline   MasterP82 

  • Gruppe: aktive Mitglieder
  • Beiträge: 221
  • Beigetreten: 30. Juni 12
  • Reputation: 10

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


0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0