gelöst Warum kein !-Zeichen möglich?
Hallo alle zusammen,
diesen Programmschnipsel habe ich im Netz gefunden:
Diese Teil habe ich in meine Batch eingefügt und nun kann ich nirgens mehr "!" Zeichen mehr anzeigen lassen. Wo liegt der Fehler?
Gruß
Toni
diesen Programmschnipsel habe ich im Netz gefunden:
01.
@echo off &setlocal
02.
03.
<nul set /p "=Enter your password: "
04.
call :HInput pw
05.
echo Input length is %errorlevel%
06.
setlocal EnableDelayedExpansion
07.
echo Your password is %pw%
08.
pause
09.
goto :eof
10.
11.
12.
:HInput [ByRef_VarName]
13.
:: inspired by Carlos @ www.DosTips.com
14.
if "%__HI__%" neq "__HI__" (
15.
setlocal DisableDelayedExpansion
16.
set "S=" &set "N=0" &set "__HI__=__HI__"
17.
for /f %%i in ('"prompt;$h&for %%i in (1) do rem"') do set "BS=%%i"
18.
)
19.
set "C="
20.
for /f "delims=" %%i in ('2^>nul xcopy /lw "%~f0" "%~f0"') do if not defined C set "C=%%i"
21.
set "C=%C:~-1%"
22.
setlocal EnableDelayedExpansion
23.
if not defined C (
24.
echo(
25.
if "%~1"=="" (
26.
echo(!S!
27.
endlocal &endlocal &exit /b %N%
28.
) else (
29.
if defined S (
30.
for /f delims^=^ eol^= %%i in ("!S!") do endlocal &endlocal &set "%~1=%%i" &exit /b %N%
31.
) else endlocal &endlocal &set "%~1=" &exit /b 0
32.
)
33.
)
34.
if "!BS!"=="!C!" (
35.
set "C="
36.
if defined S set /a "N -= 1" &set "S=!S:~,-1!" &<nul set /p "=%BS% %BS%"
37.
) else set /a "N += 1" &<nul set /p "=*"
38.
if not defined S (
39.
endlocal &set "N=%N%" &set "S=%C%"
40.
) else for /f delims^=^ eol^= %%i in ("!S!") do endlocal &set "N=%N%" &set "S=%%i%C%"
41.
goto HInput
Gruß
Toni
4 Antworten
- LÖSUNG certifiedit.net schreibt am 28.06.2013 um 21:44:35 Uhr
- LÖSUNG bastla schreibt am 28.06.2013 um 22:48:51 Uhr
- LÖSUNG rubberman schreibt am 28.06.2013 um 22:55:46 Uhr
- LÖSUNG ET0815 schreibt am 06.07.2013 um 18:51:18 Uhr
LÖSUNG 28.06.2013 um 21:44 Uhr
1. Wofür brauchst du das Skript?
2. Warum willst du "!" anzeigen lassen?
3. Wie definierst du "nirgens"?
2. Warum willst du "!" anzeigen lassen?
3. Wie definierst du "nirgens"?
LÖSUNG 28.06.2013, aktualisiert um 22:59 Uhr
Hallo ET0815!
Ändere Zeile 7 auf
Zur eigentlichen Frage siehe zB https://www.administrator.de/contentid/166740
Grüße
bastla
Ändere Zeile 7 auf
echo Your password is !pw!
Grüße
bastla
LÖSUNG 28.06.2013, aktualisiert um 23:05 Uhr
Hallo ET0815.
Der Code kommt mir doch sehr bekannt vor
Ich vermute ich weiß worauf du hinaus willst.
Zeile 6 schaltet die verzögerte Variablenerweiterung ein. Dies ist nötig um auch Sonderzeichen, wie &<>| in der Variablen pw ohne Nebenwirkungen auszugeben. Ausrufezeichen bekommen so aber einen Sonderstatus, da sie statt Prozentzeichen bei der Variablenerweiterung verwendet werden (solltest du eigentlich in Zeile 7 so nutzen, im ursprünglichen Code steht deshalb auch !pw!).
Einfachste Lösung:
Schalte die verzögerte Variablenerweiterung mit einem
endlocal
wieder aus, sobald du sie nicht mehr benötigst.
Grüße
rubberman
Der Code kommt mir doch sehr bekannt vor
Ich vermute ich weiß worauf du hinaus willst.
Zeile 6 schaltet die verzögerte Variablenerweiterung ein. Dies ist nötig um auch Sonderzeichen, wie &<>| in der Variablen pw ohne Nebenwirkungen auszugeben. Ausrufezeichen bekommen so aber einen Sonderstatus, da sie statt Prozentzeichen bei der Variablenerweiterung verwendet werden (solltest du eigentlich in Zeile 7 so nutzen, im ursprünglichen Code steht deshalb auch !pw!).
Einfachste Lösung:
Schalte die verzögerte Variablenerweiterung mit einem
endlocal
wieder aus, sobald du sie nicht mehr benötigst.
Grüße
rubberman
LÖSUNG 06.07.2013 um 18:51 Uhr
alles klar, danke rubberman! jetzt funktionierts
Gruß
Gruß
Ähnliche Inhalte
Neue Wissensbeiträge
Heiß diskutierte Inhalte