maximal1981
Goto Top

Was genau bewirken die at-Zeichen in Batches und wann werden sie eingesetzt?

Hallo!

Habe mir schon einige Batch-Scripts durchgelesen, jedoch habe ich für mich persönlich noch nicht klären können, wann und warum ein "@" verwendet wird.

Ich nehme mal als Beispiel Workshop Batch for Runaways - Part I - Beispiel FindLongPath.Bat Bedenklich lange Pfade finden her.

Zeile 3
@ECHO off & SETLOCAL ENABLEEXTENSIONS


warum mit "@"? unterschied zu ohne?

Zeile 13
FOR /F "delims=" %%i in (%tmpdatei%) do (set "x=%%i") && if "!x:~%p2%,10!" GTR "@" @echo %%i >>%reportdatei%  


das "@" in Anführungszeichen: ich nehme an das ist ein ASCII-Vergleich --> @=64; dann sollte man doch wegen der korrekten Funktion auf "SPACE" vergleichen mit "GEQ"
wieso @echo und nicht echo?

Zeile 16
ECHO Report wurde gespeichert als %reportdatei%.


dieses mal ohne "@", warum?

Zeile 63
FOR %%i IN (%usedvars% usedvars) DO @IF DEFINED %%i (


es gibt sie auch in ifs!?! face-surprise was bewirkt es? was wäre ohne anders?

Besten Dank im Voraus

Content-Key: 238746

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

Printed on: April 18, 2024 at 01:04 o'clock

Member: colinardo
Solution colinardo May 21, 2014 updated at 09:43:30 (UTC)
Goto Top
Hallo maximal1981, Willkommen auf Administrator.de!
http://ss64.com/nt/echo.html
In a batch file, the @ symbol is the same as ECHO OFF applied to the current line only.

Grüße Uwe
Member: Xaero1982
Solution Xaero1982 May 21, 2014 updated at 09:42:54 (UTC)
Goto Top
Moin,

die Suche wäre schneller gewesen :P

https://www.google.de/search?client=opera&q=at-Zeichen+in+Batches&am ...

Das Zeichen verhindert lediglich die Ausgabe der Zeile wovor das @ steht

"@echo off" zeigt auf der Kommandozeile nichts an!
"echo off" zeigt "echo off" an.

@echo off
echo {atEcho off} Es wird nur dieser Text angezeigt ohne Ausfuehrungspfad
echo.
pause
cls
@echo on
echo {atEcho on) Es wird dieser Text angezeigt und der Ausfuehrungspfad und dieser Text in einer neuen Zeile noch mal ausgegeben
echo.
pause
cls
echo off
echo {echo off} Es wird "echo off" angezeigt und dieser Text in einer neuen Zeile ausgegeben  
echo.
pause
cls
echo on
echo {echo on} Es wird dieser Text angezeigt inkl. Ausfuehrungspfad und dieser Text in einer neuen Zeile noch mal ausgegeben
echo.
pause
cls
echo {echo.} Macht eine Leerzeile
echo.
pause
cls
@echo {@echo} Dieser Text wird ohne Ausführungspfad ausgegeben und auch nur ein mal
pause
cls
echo Hallo das ist ein Test und ich werde in der cmd angezeigt>echo.txt
pause
cls
@echo Hallo das ist ein Test und ich werde nicht in der cmd angezeigt>>echo.txt
pause

Gruß
Member: maximal1981
maximal1981 May 21, 2014 updated at 10:08:00 (UTC)
Goto Top
Wenn schon "@ECHO OFF" im Batchfile steht wieso ist dann noch zusätzlich ein @ IF in Zeile 63? Wäre das dann theoretisch überflüssig?

mfg maximal1918
Member: Haru777999
Haru777999 May 22, 2014 updated at 14:39:39 (UTC)
Goto Top
Hallo Max

Weiss nicht, welche Zeile 63 du meinst.
Aber ja, in einem CMD-File mit @echo off am Anfang ist dann das @ bei einem if oder anderen Befehl nicht mehr nötig.
Ich verwende das @ nur, wenn ich auf der Kommandozeile was mache, welche eben kein @echo off am Anfang hat.
Der Befehl mit dem @ soll sich einfach selbst nicht auch noch echoen.

Kleines aber gutes Bsp.:
C:\>for /f %A in ('set') do @echo %A
C:\>for /f %A in ('set') do echo %A

Grüsse
Haru