Batch Datei-Eingabe und-Validierung und die Einschränkung
Habe ich eine batch-Datei, um Kunden zu tun, automatisierte Sicherung Ihrer Dateien jedoch nicht Bearbeiten freundlich zu Ihnen, so dass ich planen, um die Eingabe des clients einen Buchstaben für das Ziellaufwerk der Sicherung.
Das problem ist, ich weiß nicht, wie beschränken Sie Ihre Eingabe auf nur ein Zeichen und nur a-z
Habe ich gelesen, diese Ressource >
Batch Datei Eingabe-überprüfung - Stellen Sie sicher, dass Benutzer eingegebenen Ganzzahl . Aber noch nicht herausfinden können, keine Lösung
Die Frage ist, brauchen wir wirklich können festlegen, dass die Eingabe der Länge und der Validierung Sache? gibt es irgendwelche Referenz verwenden können, in dieser Angelegenheit?
hier ist mein code
:init
@echo off
color 02
REM -- set vars
set tgl=%DATE:~0,2%
set bln=%DATE:~-7,2%
set thn=%DATE:~-4,4%
set jam=%TIME:~0,2%
if "%time:~0,1%"==" " set jam=0%TIME:~1,1%
set menit=%TIME:~3,2%
set detik=%TIME:~6,2%
echo Under which drive will you save the backup? ( one letter only, a-z )
set /p drive=
pause
cls
:stopsvc
net stop svc01
cls
echo stop service [OK]
echo copy files [ ]
echo start service [ ]
echo archiving [ ]
echo.
REM -- start backup
echo.
:copy
echo copying ...
xcopy /e /y c:\docs %drive%:\data\docs\
cls
echo stop service [OK]
echo copy files [OK]
echo start service [ ]
echo archiving [ ]
echo.
echo.
:startsvc
echo starting MySQL service...
net start svc01
if errorlevel = 1 goto svcfail
echo.
echo done
cls
echo stop service [OK]
echo copy files [OK]
echo start service [OK]
echo archiving [ ]
echo.
echo.
echo backup successfully created
echo now archiving ...
echo.
:archive
cd "%drive%:\data"
ren "docs" "BACKUP-[%jam%.%menit%]-%tgl%-%bln%-%thn%"
echo archiving - OK
cls
echo stop service [OK] > "logBACKUP-[%jam%.%menit%]-%tgl%-%bln%-%thn%.txt"
echo copy files [OK] >> "logBACKUP-[%jam%.%menit%]-%tgl%-%bln%-%thn%.txt"
echo start service [OK] >> "logBACKUP-[%jam%.%menit%]-%tgl%-%bln%-%thn%.txt"
echo archiving [OK] >> "logBACKUP-[%jam%.%menit%]-%tgl%-%bln%-%thn%.txt"
echo.
echo.
echo buhbye
echo copyright(c) [SC] 2010-2011
pause
goto eof
:svcfail
echo cannot start svc01 service > "logBACKUP-[%jam%.%menit%]-%tgl%-%bln%-%thn%.txt"
echo start it manually through services.msc >> "logBACKUP-[%jam%.%menit%]-%tgl%-%bln%-%thn%.txt"
echo.
echo.
echo stop service [OK]
echo copy files [OK]
echo start service [FAIL]
echo archiving [ ]
pause
goto archive1
:archive1
cd "%drive%:\data"
ren "docs" "BACKUP-[%jam%.%menit%]-%tgl%-%bln%-%thn%"
echo archiving - OK
cls
echo stop service [OK] >> "logBACKUP-[%jam%.%menit%]-%tgl%-%bln%-%thn%.txt"
echo copy files [OK] >> "logBACKUP-[%jam%.%menit%]-%tgl%-%bln%-%thn%.txt"
echo start service [FAIL] >> "logBACKUP-[%jam%.%menit%]-%tgl%-%bln%-%thn%.txt"
echo archiving [OK] >> "logBACKUP-[%jam%.%menit%]-%tgl%-%bln%-%thn%.txt"
echo.
echo.
echo all done~!
pause
goto eof
:eof
exit
- Sie verwenden könnte, die Wahl zu bekommen, nur ein Zeichen (Vista, Win7)
- aber das wäre ca. 23 zur Auswahl , aber ich werde versuchen, dass
Du musst angemeldet sein, um einen Kommentar abzugeben.
Folgende Verwendungen basic cmd-syntax. Es wird Schleife, bis der Benutzer geben Sie eine einzelne Kleinbuchstaben.
"%choice:~1,1%"==""
begrenzt die Eingabe auf 1 Zeichen? Auch, es klingt wie dieif
Aussagen, sagenif choice is less than "a" and greater than "z", try again.
Wie funktioniert das hinzufügen eines Laufwerks Buchstaben zwischen a und z? Und @dbenham, fügen SieIF /I
zu machen, der groß-und Kleinschreibung.Gibt es keine Möglichkeit, das zu tun, mit der original-BATCH-Befehle; Sie können jedoch, verwenden Sie ein Drittanbieter-Programm. Zum Beispiel, die Batch-Datei erstellen GETKEY.COM Datei:
Müssen Sie haben DEBUG.COM um für diese zu arbeiten. GETKEY Lesen Sie einen Schlüssel und wieder in seine ASCII-code in den ERRORLEVEL, den Schlüssel zu Lesen ist NICHT auf dem Bildschirm zurückgegeben. Sie müssen manipulieren der Wert, der zurückgegeben wird, um zu überprüfen, dass ist in den gewünschten Bereich, und konvertieren Sie Sie dann in der entsprechende Buchstabe:
Können Sie auch Funktions-und Sondertasten diese Weise...
Wenn Sie mit Vista oder höher verwenden, können Sie WAHL-Befehl (Typ "CHOICE/?" für Dokumentation) standardmäßig, ist die AUSWAHL groß-und Kleinschreibung, die ich denke, ist eine gute Sache für Ihre situation.
Hier ist eine variation von Giles Arcas Strategie der Eintrag, Validierung, welches sowohl groß-und Kleinbuchstaben. Es ist auch ein wenig robuster in der Verarbeitung von leeren Saiten richtig. Diese Arbeit sollte auf XP und später.
Hier ist eine weitere Variante, verwendet ein FINDSTR regulären Ausdruck zur Validierung der Eintrag
Die verzögerte Erweiterung wird empfohlen, im Falle der Benutzer gibt einen string wie
"&"&
Können Sie verwenden ReadFormattedLine Unterprogramm für alle Arten von formatierten Eingabe. Zum Beispiel der Befehl unten Lesen nur einen Brief:
Diese Unterroutine ist geschrieben in purem Batch, so dass es erfordert keine zusätzlichen Programm, und es erlaubt es, mehrere formatierte Eingabe-Operationen, wie Lesen Passwörter. Im vorherigen Beispiel wird das Unterprogramm automatisch fortgesetzt, nachdem der Benutzer drücken Sie einen Buchstaben, so dass es nicht erfordern Enter-Taste. Sie können herunterladen ReadFormattedLine Unterprogramm aus Lesen einer Zeile mit einem bestimmten format.