Batch - Wieso will diese Datei nicht funktionieren?

Hi Leute,

ich bin am Verzweifeln bei der leichtesten Sache in Batch überhaupt.
Prüfen ob die Datei da ist oder nicht.

Mir wirft die CMD aus, dass syntaktisch etwas nicht stimmen würde (nicht verarbeitet werden kann) und ich frage mich was.

Meine CMDs hier.

Funktioniert:

###################################################

@echo off
title LW

REM cd /d %~dp0
set file=D:\share\Links.txt

:start
timeout 5 1>nul

for %%A in ("%file%") do if %%~zA==0 (
REM echo Datei ist leer
goto start
) else (
REM cls
REM echo Datei hat Inhalt - Kopiere folgenden Inhalt in Zwischenablage
REM echo.
REM echo %%~zA
type %file%
echo.
echo.
type %file%|clip
echo 0>%file% 1>nul
goto start
)

###################################################

Funktioniert nicht:

###################################################

@echo on
title LW

if exists D:\share\Links.txt
(
set file=D:\share\Links.txt
:start
timeout 5 1>nul

for %%A in ("%file%") do if %%~zA==0
(
REM echo Datei ist leer
goto start
) else (
REM cls
REM echo Datei hat Inhalt - Kopiere folgenden Inhalt in Zwischenablage
REM echo.
REM echo %%~zA
type %file%
echo.
echo.
type %file%|clip
echo 0>%file% 1>nul
goto start
) else (
exit
)

###################################################

Könnt ihr den Fehler erkennen?

Das ärgert mich sowas von. Was fehlt ihm?

Vielen Dank euch!
 
@schmutzpuckel Ich denke du kannst mich hier zerlegen
 
Mit Batch habe ich nicht viel zu tun, aber

  1. Laut Dokumentation ist die korrekte Syntax exist, du hast ein s angehängt.
  2. Du machst fünf Klammern auf und nur vier zu.
 
if exist heisst der Befehl und nicht if exists.
Oben fehlt eine Klammer ")".
Und 2x else bei einem if Befehl geht auch nicht.

Code:
Bitte Anmelden oder Registrieren um Code Inhalt zu sehen!

Bedenke aber das du so immer im Loop bleiben wirst, auch wenn der Hashwert deiner Datei verändert wurde. ich würde das mit calls lösen, ist wesentlich simpler und effektiver.
 
Danke Jungs, ich schaue mir das Mal an!
 
Ich weiss ja nicht was du nutzt aber Notepad ++ bietet simpple syntaxhighlights an

Falsch:
1757447592685.png
Richtig:
1757447623579.png
Diese Klammer wird nicht geschlossen
1757447703793.png
Wäre wahrscheinlich mit notepad ++ aufgefallen, da es diranzeigen kann auf welcher klammer sich die ausgewählte bezieht
1757447788797.png
 
Korrekt. Ich nutze Notepad++

Nach rumbasteln und den Tipps von euch läuft der Lachs.

Code:
Bitte Anmelden oder Registrieren um Code Inhalt zu sehen!

Irgendwas falsch?

Die "" habe ich außen vor gelassen, da ich keine Leerzeichen in meinem Pfad haben werde.
 
Einrückungen und schön machen kommt dann noch. Erstmal soll dat Ding laufen.
 
Code:
Bitte Anmelden oder Registrieren um Code Inhalt zu sehen!

Du hast die Variable %file% nicht gesetzt, das wird so nicht funktionieren. So sollte es gehen:

Code:
Bitte Anmelden oder Registrieren um Code Inhalt zu sehen!
 
Oh man, ich habe da sowieso so einiges falsch gemacht und das bei der einfachen Batch. Danke für deinen Input, ich werde mir das heute mal genauer ansehen. Keine Ahnung warum ich mich da so schwer tue.
 
Ich habe vom Programmieren ja gar keinen Schimmer, ob es nun Batch oder Go oder was auch immer ist. Mir hat aber Claude dabei geholfen, einen vollständigen Tracker für Diablo 2 zu basteln, und ich habe deine Batch-Datei zum Verbessern/Korrigieren weitergegeben vielleicht hilft dir das.

batch
@echo off
title LW

:start
set "file=D:\share\Links.txt"
if exist "%file%" (
for %%A in ("%file%") do (
if %%~zA==0 (
timeout 5 >nul
goto :start
) else (
goto :copy
)
)
) else (
goto :exit
)

:copy
type "%file%"
echo.
echo.
type "%file%"|clip
type nul>"%file%"
timeout 5 >nul
goto :start

:exit
exit
 
Danke, am Wochenende werde ich das Skript testen und Rückmeldung geben. Danke an eure Hilfe, ihr seid super. Das Skript sieht so aus, als wäre es lauffähig. Bin gespannt.
Ich habe vom Programmieren ja gar keinen Schimmer, ob es nun Batch oder Go oder was auch immer ist. Mir hat aber Claude dabei geholfen, einen vollständigen Tracker für Diablo 2 zu basteln, und ich habe deine Batch-Datei zum Verbessern/Korrigieren weitergegeben vielleicht hilft dir das.

batch
@echo off
title LW

:start
set "file=D:\share\Links.txt"
if exist "%file%" (
for %%A in ("%file%") do (
if %%~zA==0 (
timeout 5 >nul
goto :start
) else (
goto :copy
)
)
) else (
goto :exit
)

:copy
type "%file%"
echo.
echo.
type "%file%"|clip
type nul>"%file%"
timeout 5 >nul
goto :start

:exit
exit
 
Da bin ich ein paar Tage unterwegs und "verpasse" so schöne Threads ...
 
Mir ist Hardware abgeraucht. Muss die Tage reparieren und melde mich.
 

Data-Load.me | Data-Load.ing | Data-Load.to | Data-Load.in

Auf Data-Load.me findest du Links zu kostenlosen Downloads für Filme, Serien, Dokumentationen, Anime, Animation & Zeichentrick, Audio / Musik, Software und Dokumente / Ebooks / Zeitschriften. Wir sind deine Boerse für kostenlose Downloads!

Ist Data-Load legal?

Data-Load ist nicht illegal. Es werden keine zum Download angebotene Inhalte auf den Servern von Data-Load gespeichert.
Oben Unten