Batch-Datei: Schleife gibt den eingegebenen Variablenwert nicht in eine externe Datei aus

414
cgitech

Das Problem liegt in diesem Teil des Codes:

for /l %%x in (1, 1, %num%) do ( set /p "inp=Enter Ext of PC: " echo pc-%inp%x>>"Myfile.log" ) 

Hier ist der vollständige Code:

@ECHO OFF  :: +++++++++++++++++++ MENU +++++++++++++++++++++ :menu cls echo. echo 1) Add PCs to Log File echo 2) View Log File echo 3) Exit echo. goto option  :option set /p op=Type option #: if "%op%"=="1" goto addext if "%op%"=="2" goto viewcnt if "%op%"=="3" goto exit   :: ++++++++++++++++++++ OPTIONS ++++++++++++++++++++++  :addext :: Enter Number of PCs to Add to Log File echo. set /p "num=Enter Num of PCs to Add: " echo. goto addlog  :addlog :: Create/Clear Log File/Enter Computer Extensions/Write to Log File cls echo. echo.>"Myfile.log" for /l %%x in (1, 1, %num%) do ( set /p "inp=Enter Ext of PC: " echo pc-%inp%x>>"Myfile.log" ) echo. pause goto menu  :viewcnt :: View Log File type Myfile.log echo. pause goto menu  :exit @exit 

Ziele

Geben Sie die Anzahl der PCs ein, die der Protokolldatei hinzugefügt werden sollen - Works

set /p "num=Enter Num of PCs to Add To: " 

Ausgabe:

Enter Num of PCs to Add To: 

Protokolldatei erstellen / löschen (jedes Mal, wenn Option 1 des Menüs ausgewählt wird) - Works

echo.>"Myfile.log" 

Legen Sie die Variable %inp%für die Anzahl der Computer aus der %num%Variablen fest - Hilfe benötigen

for /l %%x in (1, 1, %num%) do ( set /p "inp=Enter Ext of PC: " echo pc-%inp%x>>"Myfile.log" ) 

Ausgabe:

Enter Ext of PC: 

(Iteriert die Anzahl der Male %num%ist gleich)

  • Fordert zur Eingabe der Erweiterungsvariablen auf, wie oft die vorherige Eingabe vorgegeben ist - Works
  • Kann jede Erweiterung eingeben - Works
  • Sie sind sich nicht sicher, was mit der eingegebenen Variablen geschieht - Brauchen Sie Hilfe

Schreiben Sie die Variablen in die Protokolldatei - Brauchen Sie Hilfe

echo pc-%inp%x>>"Myfile.log" 
  • Das Präfix vor der Variablen zeigt die Anzahl der Eingaben - Works
  • Die eingegebenen Variablen nicht enthalten - Brauchen Sie Hilfe

Protokolldatei anzeigen - Works

type Myfile.log 

Weitere Überlegungen:

  • pc-%inp%ist der Computername (Präfix: PC-), gefolgt von (Variable: %inp%/ Beispiel: PC-A001 )
  • %inp%muss alphanummerisch sein (ein Buchstabe gefolgt von 3 Zahlen: a001 )
0
[EnableDelayedExpansion - Windows CMD - SS64.com] (https://ss64.com/nt/delayedexpansion.html) DavidPostill vor 6 Jahren 1
@DavidPostill - Vielen Dank für Ihre Beiträge, aber ich bekomme immer noch die gleichen Ergebnisse. Ich habe das EnableDelayedExpansion: SETLOCAL EnableDelayedExpansion-Echo eingefügt.> "Myfile.log" für / l %% x in (1, 1,% num%) do (set / p "inp = Ext. PC eingeben:" echo pc-% inp % x >> "Myfile.log") cgitech vor 6 Jahren 0
Du hast den Punkt verpasst. Sie müssen auch "-% inp% x" durch "-! Inp! X" ersetzen. DavidPostill vor 6 Jahren 0
Beeindruckend!!! Das habe ich total vermisst !!! Vielen Dank. Auch das x in _! Inp! X_ ist nicht erforderlich. cgitech vor 6 Jahren 0

1 Antwort auf die Frage

0
cgitech

Hier ist der Code, der funktioniert:

SETLOCAL EnableDelayedExpansion echo.>"Myfile.log" for /l %%x in (1, 1, %num%) do ( set /p "inp=Enter Ext of PC: " echo pc-!inp!>>"Myfile.log" ) 

Notwendige Änderungen waren:

  • Hinzufügen des SETLOCAL EnableDelayedExpansion
  • Wechsel %inp%xzu!inp!

Vielen Dank an DavidPostill für Ihre Hilfe