2016-03-23 12 views
0

Yani .fsb dosyalarından .wav dosyalarını ayıklamak için forfiles /M DX* /P ..\fsb /C "cmd /c cd ..\extracted && fsb2wav @path" kullanmayı deniyorum.
Yalnızca DX * .fsb biçiminde ve DX _FR.fsb veya DX _DE.fsb gibi biçimlendirilmiş dosyaları almam gerekir; burada * herhangi bir sayıda alfasayısal karakter olabilir.
Bunu yapmanın bir yolu var mı?/M seçeneğiyle uğraşıyordum ama normal ifadeler gibi görünmüyor.FORMILES için Arama Masasını toplu olarak nasıl kullanırım?

cevap

1

* joker karakteri, dosya/yol adlarında geçerli herhangi bir sayıda karakter anlamına gelir (?, geçerli tek bir karakter anlamına gelir), bu nedenle filtrelemeyi kendiniz yapmanız gerekir.

Göreviniz için forfiles numaralı telefonu kullanmam, çünkü her yineleme için yeni bir cmd örneğini aldığı için oldukça yavaştır ve ek bir filtre uygulamak daha karmaşıktır. Senaryoyu teste

@echo off 
setlocal EnableExtensions DisableDelayedExpansion 

rem Define constants here: 
set "WORKDIR=..\extracted" 
set "SEEKDIR=..\fsb" 
set "DIRFILT=DX*.fsb" 
set "REGEXPR=^DX[0-9A-Z]*.fsb$" 

pushd "%SEEKDIR%" && (
    for /F "eol=| delims=" %%F in (' 
     dir /B "%DIRFILT%" ^|^
      findstr /I /R "%REGEXPR%" 
    ') do (
     pushd "%WORKDIR%" && (
      ECHO fsb2wav "%%~fF" 
      popd 
     ) 
    ) 
    popd 
) 

endlocal 
exit /B 

sonra aslında fsb2wav aracı çalıştırmak için büyük harf ECHO kaldırın: ben gider yolu dir /B komutunun çıktısını ayrıştırır bir for /F döngü findstr içine taşınıyor olduğunu.

+0

Komut dosyasını bir .bat dosyasına koyup çalıştırdığımda hiçbir şey yapmaz. Bu benim ilk defa parti ile uğraşıyor, yanlış bir şey mi yapıyorum? – Espequair

+0

Toplu iş dosyasını çift tıklatmayın, ancak komut istemi penceresinden çalıştırın; Test amaçları için onları yürütmek yerine 'fsb2wav' komut satırlarını çıkardığını göreceksiniz; son cümlenin cevabımla ilgili olduğunu; toplu betiğin doğru konumda olması gerektiğini unutmayın, göreceli yolları kullandınız (bunları yalnızca sizin sorunuzdan kopyaladım); aldığım kadarıyla, aynı konumda üç dizin bulunmalıdır: 'fsb' (kaynak dosyaları içeren),' extracted' (dönüştürülen dosyaları saklamak için) ve betiğin yerleştirildiği başka bir tane… – aschipfl

+0

Tamam, ne yaptığınızı anlamaya başladım, sadece karışık olan REGEXPR idi. DIRFILT hangi amaca hizmet ediyor? – Espequair

İlgili konular