Variable in Parameter speichern und bei der Ausgabe ignoieren
Hallo Leute ;)
ich habe ein Batch Skript geschrieben in dem ich Namen, Adresse, Orte und vieles mehr auslesen kann.
die Datei heißt Liste.bat
wenn ich die in der cmd ausgeben lasse bekomme ich alle Informationen die ich brauche. Ist es möglich durch Parameterübergabe bestimmte Inhalte auszublenden bzw. bei der Ausgabe ignoieren.
ich will das ich später eingeben kann -> Liste.bat /o München
/o will ich als Parameter übergeben
Es soll dann mir die Ergebnisse ohne den Ort München anzeigen
Aus einer For schleife werden die Orte in Parameter %%n gespeichert .. durch "echo %%n" sehe ich alle Orte
Wäre sehr hilfreich wenn einer mir da weiter helfen könnte
Viele Grüße
BatchAnfaenger91
ich habe ein Batch Skript geschrieben in dem ich Namen, Adresse, Orte und vieles mehr auslesen kann.
die Datei heißt Liste.bat
wenn ich die in der cmd ausgeben lasse bekomme ich alle Informationen die ich brauche. Ist es möglich durch Parameterübergabe bestimmte Inhalte auszublenden bzw. bei der Ausgabe ignoieren.
ich will das ich später eingeben kann -> Liste.bat /o München
/o will ich als Parameter übergeben
Es soll dann mir die Ergebnisse ohne den Ort München anzeigen
Aus einer For schleife werden die Orte in Parameter %%n gespeichert .. durch "echo %%n" sehe ich alle Orte
Wäre sehr hilfreich wenn einer mir da weiter helfen könnte
Viele Grüße
BatchAnfaenger91
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 283791
Url: https://administrator.de/forum/variable-in-parameter-speichern-und-bei-der-ausgabe-ignoieren-283791.html
Ausgedruckt am: 10.01.2025 um 07:01 Uhr
12 Kommentare
Neuester Kommentar
Beispiel:
Gruß jodel32
@echo off
set exclude=
REM Wenn der erste Batrch-Parameter '/o lautet weise den zweiten einer Variablen zu
if /i "%~1" == "/o" set "exclude=%~2"
if defined exlude (
REM Wenn Filter gewünscht ...
for /f "delims=" %%n in ('findstr /ivc:"%exclude%" "C:\Orte.txt"') DO @echo %%n
) else (
REM .... ohne Filter
)
Doch, das tut genau das ! In %~1 steht der erste Parameter drin und in %~2 der zweite usw. welcher an die Batch übergeben wird !
In Zeile 4 wird geprüft ob der Parameter /o angegeben wurde, und wenn ja, wird der Pfad welcher im zweiten Parameter steht in die Variable exclude gespeichert, welche du dann in deinem Skript verwenden kannst ...
Ein bißchen Doku lesen schadet nicht:
http://www.microsoft.com/resources/documentation/windows/xp/all/proddoc ...
In Zeile 4 wird geprüft ob der Parameter /o angegeben wurde, und wenn ja, wird der Pfad welcher im zweiten Parameter steht in die Variable exclude gespeichert, welche du dann in deinem Skript verwenden kannst ...
Ein bißchen Doku lesen schadet nicht:
http://www.microsoft.com/resources/documentation/windows/xp/all/proddoc ...
meinst du es so ?
Fast leider ein paar Fehler drin....@echo off & setlocal ENABLEDELAYEDEXPANSION
set exclude=
if /i "%~1" == "/o" set "exclude=%~2"
if defined exclude (
for /f "skip=2 tokens=1,2,3* delims=," %%k in ('wmic share get Name^,Path /format:csv ^| findstr /ivc:"%exclude%"') DO @ (
echo %%a
)
)
Meine Empfehlung lerne besser gleich Powershell, investiere in die Zukunft statt in die Vergangenheit...
Nur habe ich gemerkt sobald ich die Parameter weglasse überspringt er mir die erste Ausgabe. Mit Parameter stimmt alles.
Ist ja logisch, diesen Fall musst du im else Teil abfangen wie in meinem ersten Code-Schnippsel gezeigt, dort kannst du dann die Abfrage ohne den Auschluss einbauen... mitdenken my friend
Nerv ...
Normalerweise eine Frage zum Thema und nicht Tausende in einem Thread, danke ....
@echo off & setlocal ENABLEDELAYEDEXPANSION
set exclude=
if /i "%~1" == "/o" set "exclude=%~2"
if defined exclude (
for /f "skip=2 tokens=1,2,3* delims=," %%a in ('wmic share get Name^,Path /format:csv') DO @ (
echo %%c | findstr /ic:"%exclude%" >nul || (
echo %%a
)
)
)