mario.steinberg
Goto Top

Set p choise aus einer If-Abfrage heraus

Hallo ich habe folgendes Problem.
Ich möchte aus einer If-Abfrage heraus eine Variable über die Eingabeaufforderung setzten. Hier ein Beispiel:

 
@echo off

set AUFZAEHLUNG=auf1 auf2 auf3
for %%a in (%AUFZAEHLUNG%) do (
	if exist test.bat (
		set choice=
		set /p choice=Do you really want to overwrite the existig files y/n [n]? 
		if not ´%choice%´==´´ set choice=%choice:~0,1%
		echo choise = %choice%
		if ´%choice%´==´y´ ECHO goto COPY_FILES
		if ´%choice%´==´n´ ECHO goto END
	)
)

:END
pause
exit


Das Problem hier ist das choise nicht gesetzt wird. Probiere ich das:

 
@echo off

set AUFZAEHLUNG=auf1 auf2 auf3
for %%a in (%AUFZAEHLUNG%) do (
	echo 1=%%a
	if exist test.bat (
		echo 2=%%a
		goto ABFRAGE
	:ANTWORT
		echo 3=%%a
		if not ´%choice%´==´´ set choice=%choice:~0,1%
		echo choise = %choice%
		if ´%choice%´==´y´ ECHO goto COPY_FILES
		if ´%choice%´==´n´ ECHO goto END
	)
)

:END
pause
exit

:ABFRAGE
set choice=
set /p choice=Do you really want to overwrite the existig files y/n [n]? 
goto ANTWORT


Geht offensichtlich die Information über die Schleife und ihren Zähler verloren.
Kann mir vielleicht jemand was dazu sagen?

Vielen Dank und schöne Grüße
Mario

Content-ID: 184109

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

Ausgedruckt am: 19.11.2024 um 19:11 Uhr

60730
60730 25.04.2012 um 17:08:14 Uhr
Goto Top
moin,

Zitat von @Mario.Steinberg:
Hallo ich habe folgendes Problem.
  • face-wink in einer Batch Datei, die mit €cho face-sadff beginnt? - wie kann das denn sein?

Ich möchte aus einer If-Abfrage heraus eine Variable über die Eingabeaufforderung setzten. Hier ein Beispiel:
  • Nein - "Dein" Problem ist, dass du innerhalb einer Schleife eine Variable befüllst und das geht "so" nicht. enabledelayedexpanision²²²²²
PS: eine Variable würde ich evtl. nicht so nennen, wie ein M$ Befehl, und vielleicht auch auf sowas AUFZAEHLUNG=auf1 auf2 auf3 verzichten und auf "AUFZAEHLUNG=auf1 auf2 auf3" umschwenken.

Gruß
Mario.Steinberg
Mario.Steinberg 26.04.2012 um 08:45:31 Uhr
Goto Top
Hallo Timo,

danke! So wird nen Schuh draus:

@echo off
setlocal enabledelayedexpansion

set "AUFZAEHLUNG=auf1 auf2 auf3"  
for %%a in (%AUFZAEHLUNG%) do (
	if exist test.bat (
		set EINGABE=
		set /p EINGABE=Do you really want to overwrite the existig files y/n [n]? 
		if not ´!EINGABE!´==´´ set EINGABE=!EINGABE:~0,1!
		echo EINGABE = !EINGABE!
		if ´!EINGABE!´==´y´ ECHO goto COPY_FILES
		if ´!EINGABE!´==´n´ ECHO goto END
	)
)

:END
pause
exit
60730
60730 26.04.2012 um 09:00:39 Uhr
Goto Top
Salü,

und wenn du dem If noch einen /i spendierst, darf der User sogar Y oder N drücken face-wink

Ps: Exit am Ende?
Nimm lieber exit /b, testet sich deutlich angenehmer.