\ /? ' Zu diesem Zeitpunkt war ein Fehler in der Batchdatei unerwartet

942
Unix

Ich versuche, einen Passwortgenerator in meine Batchdatei zu integrieren, damit mehrere Passwörter generiert werden.

Leider gibt es folgenden Fehler:

\/?' was unexpected at this time. 

Die erwartete Ausgabe besteht aus mehreren (1000) Zeilen des Formulars:

Zufällige Zeichenfolge ist

Wo besteht aus 32 zufälligen Zeichen aus der Zeichenfolge _Alphanumeric.

Hier ist meine Batchdatei:

@echo off set executecounter=0 setlocal setlocal ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION set alfanum=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789   :loop (@Echo Off Setlocal EnableDelayedExpansion Set _RNDLength=32 Set _Alphanumeric=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789@()\/?'=-_+ Set _Str=%_Alphanumeric%987654321 :_LenLoop IF NOT "%_Str:~18%"=="" SET _Str=%_Str:~9%& SET /A _Len+=9& GOTO :_LenLoop SET _tmp=%_Str:~9,1% SET /A _Len=_Len+_tmp Set _count=0 SET _RndAlphaNum= :_loop Set /a _count+=1 SET _RND=%Random% Set /A _RND=_RND%%%_Len% SET _RndAlphaNum=!_RndAlphaNum!!_Alphanumeric:~%_RND%,1! If !_count! lss %_RNDLength% goto _loop Echo Random string is !_RndAlphaNum! >> D:\password2.txt pause   ) set /a executecounter=%executecounter%+1 if "%executecounter%"=="1000" goto done goto loop :done echo Complete! endlocal pause 

Wie kann ich diesen Fehler beheben?

-2
Ja hast du getan :)) Aber das ist anders. Dies war zu einem anderen, von dem ich Ihnen erzählte Unix vor 9 Jahren 0
Ich erinnere mich nicht, es war von dieser Seite, aber bevor ich mein Konto erstellt habe und seit ich den Browser geschlossen habe, war keine Geschichte mehr vorhanden. Ich werde es später bearbeiten, da ich eine mobile Verbindung habe. Ich muss jetzt einen neuen Vertrag abschließen: D Unix vor 9 Jahren 0
Sowieso habe ich es behoben;) DavidPostill vor 9 Jahren 1
Ich habe die Frage für Sie bearbeitet und mit einer korrigierten Batchdatei geantwortet;) DavidPostill vor 9 Jahren 1

2 Antworten auf die Frage

1
DavidPostill

/? ' Zu diesem Zeitpunkt war ein Fehler in der Batchdatei unerwartet.

Dies liegt daran, dass Sie Klammern benutzt haben (und )zum Gruppieren mehrerer Befehle.

Ihr Code enthält Folgendes:

( ... Set _Alphanumeric=ABCDEFGHIJKLMNOPQRSTUVWXYZ ... @()\/?'=-_+ ) 

Dies bedeutet, dass die falsche )(die in der set) der ersten Öffnung entspricht (, daher der Fehler.

In der Tat brauchen Sie keine Klammern zu verwenden (und )mehrere Befehle zu gruppieren, wenn einige andere kleine Änderungen vorgenommen werden, dh, einige Variablen müssen neu initialisiert werden, da Sie eine neue äußere Schleife haben, um mehrere Kennwörter zu generieren.


Feste Batchdatei:

@echo off  set executecounter=0 setlocal setlocal ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION  :loop  Set _RNDLength=32 Set _Alphanumeric=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789@()\/?'=-_+ Set _Str=%_Alphanumeric%987654321 SET _RndAlphaNum= set _RND= set _len=   :_LenLoop  IF NOT "%_Str:~18%"=="" SET _Str=%_Str:~9%& SET /A _Len+=9& GOTO :_LenLoop SET _tmp=%_Str:~9,1% SET /A _Len=_Len+_tmp Set _count=0 SET _RndAlphaNum=  :_loop  Set /a _count+=1 SET _RND=%Random% Set /A _RND=_RND%%%_Len% SET _RndAlphaNum=!_RndAlphaNum!!_Alphanumeric:~%_RND%,1! If !_count! lss %_RNDLength% goto _loop Echo Random string is !_RndAlphaNum!>> d:\password2.txt  set /a executecounter=%executecounter%+1 if "%executecounter%"=="1000" goto done goto loop  :done  echo Complete! endlocal pause 

Lesen Sie weiter

Entschuldigung für die späte Antwort, ich musste einige andere Projekte besuchen. Danke für die Hilfe, David, ich werde es versuchen und mich so schnell wie möglich bei Ihnen melden;) Unix vor 9 Jahren 0
Verdammt, es funktioniert wie ein Zauber und genau wie ich dachte, es ist extrem schneller als der vorherige Code (er hat die 1000 Saiten in weniger als 10 Minuten generiert). Es wird ein hervorragendes Werkzeug für die Wortliste von Stifttests sein! Unix vor 9 Jahren 0
0
beeks

Können Sie PowerShell für etwas viel Einfacheres verwenden?

$randomObj = New-Object System.Random $NewPassword="" 1..12 | ForEach { $NewPassword = $NewPassword + [char]$randomObj.next(33,126) } $NewPassword 
Ich habe niemals PowerShell verwendet. Es sieht für mich nicht benutzerfreundlich aus ... Unix vor 9 Jahren 0
@Unix gibt es einen Schuss. Es ist objektorientiert, also gewöhnungsbedürftig. Dieses Skript führt im Wesentlichen Folgendes aus: 1. Erstellen Sie ein Objekt vom Typ System.Random. 2. Erstellen Sie eine Variable mit dem Namen $ NewPassword als Zeichenfolge. 3. Führen Sie eine 12-malige Schleife aus, und fügen Sie der leeren Zeichenfolge ein zufälliges Zeichen hinzu. 4. Zeigen Sie die resultierende Zeichenfolge an beeks vor 9 Jahren 0