Batchdatei mit Zähler schleifen

1178
BondUniverse

Ok, ich weiß, dass der Schleifenteil ungültig ist, aber ich hoffe, dass ich eine Vorstellung davon bekommen kann, was ich tun möchte. Letztendlich möchte ich nach den 3 Werten gefragt werden (die Eingabeaufforderungen für jetzt auskommentiert und zur Vereinfachung des Testens hartcodiert). Dann möchte ich, dass die Schleife einmal pro CD durchlaufen wird (in diesem Beispiel also 8 Mal). Ich möchte, dass die .mp3-Datei mit einer inkrementierenden CD-Nummer benannt wird ... CD1, CD2, CD3 usw. Wenn jemand Verbesserungen hat, sind diese auch willkommen! Ich poste hier meinen vollständigen Code, um ihn mit der Community zu teilen.

@ECHO OFF  REM set /p BookName="Book Name: " REM set /p AuthorName="Author Name: " REM set /p CDNumber="Number of CDs: "  set BookName=Victory and Honor set AuthorName=W.E.B. Griffin set CDNumTot=8  set PathName=C:\Rip\%AuthorName%\%BookName% mkdir "C:\Rip\%AuthorName%\%BookName%\" REM cd C:\Program Files (x86)\freac  ECHO CD Count: %CDNumTot%  FOR /L %%N IN (1, 1, %CDNumTot%) DO ( Set FileName=%PathName%\%BookName% CD%%N.mp3 ECHO Filename: %FileName% ECHO\ ECHO Ripping CD# %%N... ECHO freaccmd -track all -o %FileName% ECHO CLS ECHO\ ECHO\ set /A NextCD=%%N ECHO Next: %NextCD ECHO Please Eject CD and insert next CD# %NextCD%... pause ) 

Endgültige Version dieses Codes (ARBEITEN dank @JoeNahmias):

@ECHO OFF SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION  set /p BookName="Book Name: " set /p AuthorName="Author Name: " set /p CDNumTot="Total number of CDs: "  set PathName=C:\Rip\%AuthorName%\%BookName%   FOR /L %%N IN (1, 1, %CDNumTot%) DO ( cls ECHO\ ECHO Please insert CD# %%N... ECHO\ pause SET FileName=%PathName%\%BookName% CD%%N.mp3 cls ECHO\ ECHO Ripping CD# %%N... ECHO\ "C:\Program Files (x86)\freac\freaccmd" -track all -o "!FileName!" REM You need the id3 executable downloaded/installed for the next line: REM id3 -l "!BookName!" -a "!AuthorName!" -n %%N "!FileName!" rundll32 user32.dll,MessageBeep -1 ECHO\ ECHO Please eject CD# %%N... pause )  cls ECHO\ ECHO DONE! pause 
0
Es wurde für die aktuelle Version aktualisiert, basierend auf dem @JoeNahmias-Beispiel, aber ich kann die Variablen im Code nicht vollständig lesen oder einen temporären Inkrementalwert innerhalb der Schleife erstellen (Aufforderung zur nächsten nummerierten CD ...). BondUniverse vor 10 Jahren 0
Am wichtigsten ist jedoch, dass die Zeile 'Set FileName =% PathName% \% BookName% CD %% N.mp3' leer ist ... BondUniverse vor 10 Jahren 0

1 Antwort auf die Frage

2
JoeNahmias

Du willst den FOR /LBefehl. Zum Beispiel:

C:\>SET num=7 C:\>FOR /L %I IN (1, 1, %num%) DO @echo %I 1 2 3 4 5 6 7 

Beachten Sie, dass Sie das Lead-Prozent-Vorzeichen in einer Batchdatei verdoppeln müssen. Also für Ihre CD-Ripping-Schleife:

FOR /L %%n IN (1, 1, %CDNumTot%) DO ( SET FileName=%PathName%\%BookName% CD %%n.mp3 ... ) 

Wenn Sie Schwierigkeiten haben, versuchen Sie Folgendes in eine Batch-Datei zu packen und zu überprüfen, ob sie funktioniert:

@ECHO OFF SET num=7 FOR /L %%I IN (1, 1, %num%) DO @echo %%I 

Versuchen Sie dies für eine vollständige Lösung:

@ECHO OFF SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION  REM set /p BookName="Book Name: " REM set /p AuthorName="Author Name: " REM set /p CDNumTot="Total number of CDs: "  set BookName=Victory and Honor set AuthorName=W.E.B. Griffin set CDNumTot=8  set PathName=C:\Rip\%AuthorName%\%BookName% REM mkdir "C:\Rip\%AuthorName%\%BookName%\" REM cd C:\Program Files (x86)\freac  ECHO CD Count: %CDNumTot%  FOR /L %%N IN (1, 1, %CDNumTot%) DO ( ECHO Please Eject CD and insert next CD# %%N... pause SET FileName=%PathName%\%BookName% CD%%N.mp3 ECHO Filename: !FileName! ECHO. ECHO Ripping CD# %%N... ECHO freaccmd -track all -o "!FileName!" ECHO CLS ECHO. ECHO. ) 
Wenn ich Folgendes verwende, erhalte ich die Fehlermeldung "CDNumTot) war zu diesem Zeitpunkt unerwartet." FOR / L% I IN (1, 1,% CDNumTot%) DO (@echo% I ECHO Nächster Schritt 1 CD% I ECHO Nächster Schritt 1 CD% I), BondUniverse vor 10 Jahren 0
Sorry, ich weiß nicht, wie man einen Code in einen Kommentar eingibt, damit er richtig angezeigt wird ... BondUniverse vor 10 Jahren 0
@BondUniverse Können Sie die ersten Befehle ausführen, die ich an der Eingabeaufforderung gab, und sehen, ob dies funktioniert? JoeNahmias vor 10 Jahren 0
@BondUniverse, Sie müssen ZWEI Prozentzeichen für die Schleifenvariable in einer Batchdatei verwenden JoeNahmias vor 10 Jahren 0
Bei dieser letzten Bearbeitung bekomme ich statt einer Zahl den Wert "n". BondUniverse vor 10 Jahren 0
@BondUniverse Bitte posten Sie Ihren aktuellen Code als Bearbeitung der Frage JoeNahmias vor 10 Jahren 0
Ich habe meinen ursprünglichen Code aktualisiert und kommentiert, was nicht funktioniert. BondUniverse vor 10 Jahren 0
Das hat funktioniert! Ich werde meine etwas optimierte Version in meiner Originalnotiz veröffentlichen. BondUniverse vor 10 Jahren 0