Batch Pfad setzen & nutzen?

2 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet

Dein Problem, die Variable %way% existiert nicht. Du uhast eine Variable Namens %way % definiert!

Falsch!!!!
set way = C:\Users\%USERNAME%\Desktop\test\output.log

In Batch dürfen Variablennamen beliebige Zeichen enthalten. So auch Leerzeichen, wie in deinem Falle! Also wie keine Leerzeichen links und rechts von Gleichheitszeichen verwenden, wenn diese nicht gewollt sind

Richtig

set "way=C:\Users\%USERNAME%\Desktop\test\output.log"

bzw.

set "way=%USERPROFILE%\Desktop\test\output.log"

Der Abbruch-/Syntaxfehler entsteht später, weil deiner Echo-Umleitung kein valides Ziel folgt (die variable %way% enthält keinen Wert/existiert schließlich nicht.

Der nächst Fallstrick: Mögliche Lehrzeichen im resultierenden Umleitungspfad.

Wenn die Variable %Usernname% oder %userprofile" Leerzeichen enthält, erfolgt die interpretation von >>umleitungspfad lediglich bis zum ersten Leerzeichen"

darum Alles was sich auf pfade bezieht, in "Quotes" übergeben:

Echo blah blubb >>"c:\Pfad mit Leer-/Sonderzeichen"

zwischen dem Echo-AusgabeString und nachfolgenden Umleitungssymbolen ">,>>,|,<" muss kein Leerzeichen stehen, sollte jedoch möglchtst! Da das Leerzeichen jedoch ebenfalls in die Umleitung geschrieben würde, ist ratsam Dateiumleitungen dem Umzuleitenden Kommando voran zu stellen!

>>"%way%" echo Computer Name= %COMPUTERNAME%

damit geht man immer auf Nummer sicher und bei Lengen Beffhlen ist sofort ersichtlich, das die Ausgabe umgeleitet wird.

@echo off
set "way=%Userprofile%\Desktop\test\output.log"
echo --------------------
echo Computer Name= %COMPUTERNAME%
>>"%way%" echo Computer Name= %COMPUTERNAME%
echo Username= %USERNAME%
>>"%way%" echo Username= %USERNAME%
echo Password= %password%
>>"%way%" echo Password= %password%
echo User Profile= %userprofile%
>>"%way%" echo User Profile= %userprofile%
echo --------------------
>>"%way%" net user
echo --------------------
>>"%way%" ipconfig
echo --------------------
>>"%way%" systeminfo
echo --------------------
>>"%way%" tasklist
echo --------------------
pause

Batch ist wegen seiner "unregelmäßigen" Syntax eine sehr schwierig zu beherrschende Sprache.

Dein obiges Problemchen ist nur ein kleiner Vorgeschmack.

Wenn Du (später) komplexere Sachen programmieren möchtest, steige auf Powershell um. Batch ist ein extrem störisches Monster: https://www.gutefrage.net/home/thema/batch-trick/neue

Woher ich das weiß:eigene Erfahrung – Ich mach das seit 30 Jahren

Erst einmal würde ich statt C:\Users\%USERNAME%\Desktop\test\output.log %userprofile%\Desktop\test\output.log verwenden.

Als Nächstes würde ich die strings, die ich per echo in die Datei schreibe in Anführungszeichen setzen.

Zuletzt würde ich zum Erstellen der Datei > und zum Anhängen an die Datei >> verwenden.

Woher ich das weiß:Hobby

Erzesel  30.11.2024, 08:46
... und zum Anhängen an die Datei > verwenden.

genau umgekehrt

zum erstellen /erneuern einer Datei wäre > angebracht und >> hängt an bzw erstell(wenn noch nicht vorhanden)

Anführungszeichen in Echo werden mit ausgegeben.

kann man umschiffen indem man Strings mit gefährlichen Zeichen durch eine for/f-Laufvariable schleust

for /f "tokens=*" %%a in ("Blah & Blub | bloed") do (
echo %%~a
>>"test.txt" echo %%~a
)

Inhalte von Laufvariablen werden immer erst nach Interpretation des do-Zweigs eingesetzt!