Batch Datei - Mehrzeilige Textdatei
Hallo Zusammen,
ich möchte mit einer Batch Datei eine Textdatei erstellen.
Ich verwende 2 Variablen (%1, %2).
Die Textdatei ist schon vorhanden und sieht so aus (%1 = ELW oder LF20, %2 = 2 oder 1):
ELW: 2
LF20: 2
LF8: 1
DLK: 2
LF16: 2
GWT: 2
MTW: 1
Wie kann ich nun hinbekommen, dass wenn meine Batch Ausführung so aussieht (batch.bat LF8 2), dass genau in dieser Zeile
der Wert von 1 auf 2 geändert wird?
Geht das grundsätzlich mit Batch oder muss ich einen anderen Weg einschlagen?
Viele Grüße
Schmakus
ich möchte mit einer Batch Datei eine Textdatei erstellen.
Ich verwende 2 Variablen (%1, %2).
Die Textdatei ist schon vorhanden und sieht so aus (%1 = ELW oder LF20, %2 = 2 oder 1):
ELW: 2
LF20: 2
LF8: 1
DLK: 2
LF16: 2
GWT: 2
MTW: 1
Wie kann ich nun hinbekommen, dass wenn meine Batch Ausführung so aussieht (batch.bat LF8 2), dass genau in dieser Zeile
der Wert von 1 auf 2 geändert wird?
Geht das grundsätzlich mit Batch oder muss ich einen anderen Weg einschlagen?
Viele Grüße
Schmakus
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 271941
Url: https://administrator.de/forum/batch-datei-mehrzeilige-textdatei-271941.html
Ausgedruckt am: 11.04.2025 um 08:04 Uhr
5 Kommentare
Neuester Kommentar
Hallo Schmakus und willkommen im Forum!
Schematisch als Batch etwa so:
Wenn Du nicht möchtest, dass die Temporärdatei (als Sicherung) erhalten bleibt, am Ende noch die Zeile
hinzufügen ...
Grüße
bastla
Schematisch als Batch etwa so:
@echo off & setlocal
set "Datei=D:\Deine Textdatei.txt"
if [%2]== (
echo\
echo Parameter fehlt!
echo\
echo Aufruf mit: %~0 Bezeichnung Wert
echo\
pause
goto :eof
)
set "DatTemp=%temp%\Datei.tmp"
move "%Datei%" "%DatTemp%"
for /f "usebackq tokens=1-2" %%i in ("%DatTemp%") do (
if "%%i" neq "%1:" (
echo %%i %%j
) else (
echo %1: %2
)
)>>"%Datei%"
del "%DatTemp%"
Grüße
bastla

Oder mit Powershell ein Einzeiler:
Aufruf dann gleich:
Gruß jodel32
(gc 'C:\datei.txt') -replace "(?m)^$([regex]::Escape($args)).*","$($args): $($args[1])" | out-file 'C:\datei.txt'
C:\script.ps1 "LF8" "2"

Moin Schmackus,
Man kann aber auf der Kommandozeile auch Parameter mitgeben:
http://php.net/manual/de/install.windows.commandline.php
Jedoch müssen diese dann stattdessen über die Variable $argv im PHP-Script ausgewertet werden.
Das ließe sich ja bei Bedarf ganz einfach zusätzlich im Script ergänzen.
Alternativ lässt sich ein URL-Aufruf aber auch so triggern:
Gruß jodel32
Jedoch kommt der Fehler: "could not open input file: c:\xampp\htdocs\alarm\status2.php?fahrzeug=elw&status=1"
Das geht so nicht. PHP erwartet hier nur den Pfad zu einer PHP Datei. Get-Parameter kannst du nur mit einem URL-Aufruf mitgeben!Man kann aber auf der Kommandozeile auch Parameter mitgeben:
http://php.net/manual/de/install.windows.commandline.php
Jedoch müssen diese dann stattdessen über die Variable $argv im PHP-Script ausgewertet werden.
Das ließe sich ja bei Bedarf ganz einfach zusätzlich im Script ergänzen.
Alternativ lässt sich ein URL-Aufruf aber auch so triggern:
powershell.exe -ExecutionPolicy Bypass -Command "&{(New-Object System.Net.WebClient).DownloadString('http://localhost/alarm/status2.php?fahrzeug=elw&status=1')}"