ralf82
Goto Top

Fehler in Batch-Datei

Hallo alle zusammen,

ich habe ein Problem mit einer Codezeile in einer Batch-Datei.

In der folgenden Zeile, soll die Anzahl der Zeilen in einer Textdatei gezählt werden.

FOR /F "delims=" %%A IN (%aip%) DO SET /A "Counter+=1"  

In %aip% steht der Dateiname. Ich bekomme in der Eingabeaufforderung ausgegeben, dass die Datei nicht existiert. Die Datei ist vorhanden. An einer anderen Stelle im Skript kann auch mit ihr gearbeitet werden.

Könnte ihr mir weiterhelfen, was in meiner Codezeile falsch ist?

Vielen Dank für eure Unterstützung

MfG Ralf

Content-Key: 6923624572

Url: https://administrator.de/contentid/6923624572

Printed on: April 24, 2024 at 17:04 o'clock

Member: Springstil
Springstil Apr 26, 2023 at 12:23:57 (UTC)
Goto Top
Ich hatte vor ein paar tagen ein ähnliches Problem. Ich habe allerdings die Batch als Befehl gestartet und habe vergessen einen workdir mit anzugeben. Vielleicht hilft dir das ja auch
Member: TK1987
TK1987 Apr 26, 2023 at 12:25:45 (UTC)
Goto Top
Moin Ralf,

In %aip% steht der Dateiname. Ich bekomme in der Eingabeaufforderung ausgegeben, dass die Datei nicht existiert.
und wie sieht %aip% aus?!

Meine Glaskugel verrät mir, dass da Leerzeichen drin sind... falls die nicht schon wieder kaputt ist.
FOR /F "UseBackQ delims=" %%A IN ("%aip%") DO SET /A "Counter+=1"  

Gruß Thomas
Member: Ralf82
Ralf82 Apr 26, 2023 at 12:30:58 (UTC)
Goto Top
Moin,

der Dateiname für heute lautet wie folgt:

agent.aip-server.wincc-agent.20230426.log

Es sind keine Leerzeilen drin.

Mich irritiert es, dass an anderer Stelle mit damit gearbeitet werden kann. Die Stelle sieht so aus:

for /f "delims=" %%f in ('more +%var% "%aip%" ^| findstr /ilc:"%text%"') do (  
    echo.%%f
	Set /A "fund = fund + 1")  

Die Batchdatei liegt in dem Verzeichnis, in dem auch die log-Datei ist.
Member: mayho33
mayho33 Apr 26, 2023 updated at 16:39:45 (UTC)
Goto Top
Zitat von @Ralf82:

Moin,

der Dateiname für heute lautet wie folgt:

agent.aip-server.wincc-agent.20230426.log

Es sind keine Leerzeilen drin.

Liegt die Batch im selben Verzeichnis? Andernfalls musst du natürlich den vollen Pfad angeben. In etwa so:
Aip="%~dp0agent.aip-server.wincc-agent.20230426.log"  

Wenn du ein anderes Arbeitsverzeichnis gesetzt hast als das der Datei, hilft...
Pushd "c:\ mein Pfad mit\Leerzeichen"  

Mich irritiert es, dass an anderer Stelle mit damit gearbeitet werden kann. Die Stelle sieht so aus:

for /f "delims=" %%f in ('more +%var% "%aip%" ^| findstr /ilc:"%text%"') do (  
    echo.%%f
	Set /A "fund = fund + 1")  

Nur mal laut gedacht. Vielleicht liegts an den Gänsefüßchen? Die sind nie verkehrt... 😉

Die Batchdatei liegt in dem Verzeichnis, in dem auch die log-Datei ist.
Immer den vollen Pfad mitgeben und du bis immer auf der hellen Seite der Macht 😉

Ach ja! Und dann hätte ich da noch eine Frage:

Warum in Batch? Warum kein Powershell? Batch ist ok um schnell Systemparameter anzupassen, PS ist gut um komplexe Vorgänge und Manipulationen zu automatisieren, also für solche Dinge zu tun wie du sie hier machen willst ...unter anderem.
Member: del.lel
del.lel Apr 26, 2023 at 19:45:04 (UTC)
Goto Top
Alternativ könntest du dir aus diesem Code noch was zam bauen.
@echo off
set counter=0
set pfad=C:\Users\user\Desktop\Hallo.txt
FOR /F "delims=:" %%A IN ('findstr /N .* %pfad%') DO set /a counter=counter+1 >nul  
echo %counter%
pause

Grüße!!
Member: Ralf82
Ralf82 Apr 27, 2023 at 08:34:01 (UTC)
Goto Top
Moin moin alle zusammen,

erstmal vielen Dank für eure Hilfe. Leider hat es nicht den gewünschten Erfolg gebracht.

Ich habe die Batch-Datei auf ein anderes System kopiert. Auf meinem PC (Windows 10) funtzt es einwandfrei. Probleme bereitet es mir nur auf einem Server (Windows Server 2012 R2).

Ich schließe daraus, dass es eine Betriebssystem-Sache ist und nicht ein Fehler in meiner Batch-Datei.

Gruß Ralf