Sayaçlı döngü dosyasi


-1

Tamam, döngü kısmının geçersiz olduğunu biliyorum, ama umarım ne yapmak istediğim hakkında bir fikir verir. Sonuçta, 3 değer için uyarılmak istiyorum (şu anda istemleri açıkladı ve test kolaylığı için zor kodlamalar yapıldı), daha sonra her döngü için CD'de bir kez çalışmasını istiyorum (bu örnekte 8 kez). .Mp3 dosyasını artan bir CD # ... CD1, CD2, CD3, vb. İle isimlendirmek istiyorum. Topluluk ile paylaşmak için buraya tam kodumu gönderiyorum.

@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
)

Bu kodun son hali (@JoeNahmias sayesinde ÇALIŞMA):

@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

Geçerli sürüm için @JoeNahmias örneğine dayanarak güncellendi, ancak koddaki değişkenleri tam olarak okuyamıyor veya döngü içinde geçici bir artımlı değer oluşturamıyor gibiyim (Bir sonraki numaralı CD'yi istemek ...).
BondUniverse

En önemlisi de, 'Set FileName =% PathName% \% BookName% CD %% N.mp3' satırı boş geliyor ...
BondUniverse

Orijinal soruyu kaldırmak için soruyu düzenlemek için -1.
Scott

Yanıtlar:


2

FOR /LKomutu istiyorsun . Örneğin:

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

Bir toplu iş dosyasında kurşun yüzde işaretini ikiye katlamanız gerektiğini unutmayın. Yani, CD kopyalama döngüsü için:

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

Zorluk yaşıyorsanız, aşağıdakileri bir toplu iş dosyasına yerleştirmeyi ve çalışıp çalışmadığını görmeyi deneyin:

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

Bunu eksiksiz bir çözüm için deneyin:

@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.
)

Aşağıdakileri kullanırsam, "CDNumTot) şu anda beklenmeyen bir hata" alıyorum. , FOR / L% I IN (1, 1,% CDNumTot%) DO (@echo% I ECHO Sonraki adım 1 CD% I ECHO Sonraki
adım

Maalesef bir yorumda nasıl kod girileceğini bilmediğiniz için doğru
görünecektir

@BondUniverse komut isteminden verdiğim ilk komutları çalıştırabilir ve çalışıp çalışmadığını görebilir misiniz?
JoeNahmias

@BondUniverse, bir toplu iş dosyasındaki döngü değişkeni için İKİ yüzde işaretlerini kullanmak zorunda
JoeNahmias

Bu son düzenleme ile, sayı yerine "n" değeri
alıyorum
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.