Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Batch For Befehl übergibt keine Variable

Frage Entwicklung Batch & Shell

Mitglied: Viper-Berlin

Viper-Berlin (Level 1) - Jetzt verbinden

14.09.2012, aktualisiert 16:11 Uhr, 2950 Aufrufe, 4 Kommentare

Ich habe ein cmd Script es soll einen Zeichenfolge in einer Textdatei suchen und mit Ja Nein antworten ob die Zeichenfolge gefunden wurde. PROBLEM es geht 1x und die VARIABLE behält dann immer den gleichen Wert

Hallo wer kann Helfen ?

SYSTEM: WKS Win7 Pro Deu


ich habe ein cmd Script es soll einen Zeichenfolge in einer Textdatei suchen und mit Ja Nein Antworten ob es die Zeichenfolge gefunden wurde PROBLEM unten beschrieben.
Als erstes ein Script was funktioniert läuft störungsfrei....

01.
REM DIESES SCRIPT geht--------------------------------- 
02.
echo off 
03.
set a=X 
04.
:anf 
05.
echo. 
06.
ECHO ++ Eingabe Suche +++++++++++++++++++++++++++++++++ 
07.
set /p suche=Eingabe: 
08.
call :protest 
09.
echo Antwort: Gefunden %a% 
10.
if /I "%suche%"=="q" exit 
11.
goto anf 
12.
:protest 
13.
set a= 
14.
FOR /F "delims=" %%i IN ('findstr /I /C:"%suche%" "tt.txt"') do ( 
15.
    set  Gefunden=%%i 
16.
    echo i=%%i 
17.
18.
IF NOT "%Gefunden%"=="" ( 
19.
   ECHO GEFUNDEN JA: 
20.
   ) ELSE ( 
21.
       ECHO GEFUNDEN NEIN: 
22.
23.
GOTO :EOF
So und jetzt das Problem:
In einem anderen Script in einer Procedure geht das nicht!! die Variable enthält einen anderen wert
also.... echo zeigt den richtigen Wert an aber die Variable wird nicht gesetzt und bleibt auch bei den nächsten Ausführungen gleich.
Die Variable wird nicht übergeben es wird immer der alte Wert angezeigt es geht 1x danach gibt die Procedure immer
den Gleichen Wert raus abwohl echo den richtigen Wert anzeigt also auch außerhalb der Procedure.

OK echo zeigt richtigen Wert an
FOR /F "delims=" %%a IN ('FINDSTR /I /C:"%suche%" "tt.txt"') do echo Gefunden=%%a

NICHT OK Variable bekommt nur 1x den WERT und bleibt dann so
FOR /F "delims=" %%b IN ('FINDSTR /I /C:"%suche%" "tt.txt"') DO set "Gefunden=%%b"

Keine Ahnung woran das Liegt wer hat einen Rat
Thanks

[Edit Biber] Codeformatierung nachgezogen. [/Edit]
Mitglied: bastla
14.09.2012 um 16:41 Uhr
Hallo Viper-Berlin!

Das Stichwort ist (wieder einmal) "delayedExpansion" ...

Es stellt sich aber zusätzlich die Frage, ob es denn sinnvoll/notwendig ist, den Inhalt von zB "%%b" einer anderen Variablen zuzuweisen und nicht gleich direkt weiter zu verarbeiten (ein Grund dafür könnte sein, dass ein Teilstring, der sich nicht per Delimiter erzeugen lässt, gebildet werden soll).

Grüße
bastla
Bitte warten ..
Mitglied: 60730
14.09.2012, aktualisiert um 16:46 Uhr
moin,

[OT]
zuerst dachte ich, das sieht aber... und dann sah ich:
[Edit Biber] Codeformatierung nachgezogen. [/Edit]

tja pustekuchen.

@Biber: gibts eingentlich nen #RGC für wie baue ich eine Schleife, ohne das Tut des geehrten Friemlers vorher gelesen zu haben?
Oder ist der Herr von und zu copypaste der erbauer?
Hatte ich das nicht neulich noch irgendwo hingemalt?
[/OT]

Ich vermute, du solltest dir mal im klaren werden, wie eine Schleife funktioniert und wie die abgearbeitet wird.
Dazu wirst du hier mehr bereits geschriebene und sehr fundierte Texte finden, als ich graue Haare auf dem Kopf hab.

Gruß
Bitte warten ..
Mitglied: 60730
14.09.2012 um 19:35 Uhr
Salue bastla,

Ich finde zeile 13 sehr passend, wobei ich mich frage ob die obere batch wirklich so funktioniert....
Dito zeile 2.

Wo wird die variable gefunden geleert?

@ viper-5000/berlin:
Schon weiter gekommen?

Gruss
Bitte warten ..
Mitglied: pieh-ejdsch
14.09.2012 um 20:27 Uhr
moin,

Das mit der Zeile 13 ist mir ja garnet so aufgefallen, aber nur weil Zeile 09 so wirklich Sinnhaft ist?
Für so einen ersten Überblick hilft mir Batchcode erstellen, da ist schon interessant welche Variablen überhaupt Benutzt werden.
Warum läuft der Batch eigentlich ohne Setlocal?
Für was wird denn die Schleife gebraucht? Möchtest Du Mit den gefunden Werten weiterarbeiten?
Find würde doch auch die Werte Finden:
@echo off 
setlocal 
:anf 
set /P „suche=Eingabe: “ 
if not defined suche echo Ende mit [Q]uit &goto :anf 
setlocal enabledelayedexpansion 
if /i !suche! equ Q exit /b 
endlocal 
find “%suche%” “D:\Datei” >nul &&echo Gefunden wurde: && find “%suche%” “D:\Datei” ||echo Wert „%suche%“ nicht Gefunden! 
Goto :anf
Gruß Phil
Bitte warten ..
Neuester Wissensbeitrag
Microsoft

Lizenzwiederverkauf und seine Tücken

(5)

Erfahrungsbericht von DerWoWusste zum Thema Microsoft ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (18)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Windows Netzwerk
Windows 10 RDP geht nicht (16)

Frage von Fiasko zum Thema Windows Netzwerk ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...