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
Please also mark the comments that contributed to the solution of the article
Content-Key: 271941
Url: https://administrator.de/contentid/271941
Printed on: April 24, 2024 at 22:04 o'clock
5 Comments
Latest comment
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')}"