2013-05-15 17 views
8

Lütfen yardım edin! Toplu iş dosyaları oluşturmak için yeni biriyim.Bir klasör içinde belirli bir uzantıya sahip dosya (lar) aramak için nasıl toplu iş dosyası oluşturabilirim?

aşağıdaki şeyler yapmak bir toplu iş dosyası oluşturmak çalışıyorum: Bir klasöre

  • Çıktı dosya adı hem içinde belirli dosya uzantısına sahip dosya (lar) (yani .docx) için

    1. Arama (test1: metin dosyası olarak bir metin dosyası (.txt)
    2. için lar) ve uzatma, ben dosya adı Örneğin

    , "klasörü 1" bu üç dosyaları vardır önce bir dizin eklemek istiyorum. docx, test2.docx, test3.xlsx Toplu iş dosyası .docx uzantılı uzantıya sahip üç dosyayı arayacak ve ardından bir metin dosyasına (örn.

    1 test1.docx
    burada 2 test2.docx

    şimdiye kadar 1. hangi yapıyor ne olduğunu: search_result.txt) search_result.txt olarak

    , bu formata sahip olacak ve yukarıda belirtilen # 2 öğe, ama # 3 uygulamak için yardıma ihtiyacım var.

    Yardım için şimdiden teşekkür ederiz. endeksini varsayarsak eşleşme sayısı sadece artan bir sayısıdır

  • +0

    neler "dosya isminden önce bir dizin ekler" demek? –

    +0

    sanırım "indeks numarası"/seri numarası: 1, 2, 3 ... @ robert-harvey – tgkprog

    +0

    ayrıca bkz. Http://stackoverflow.com/questions/2913231/how-do-i-increment-a- dos-değişken-in-a-için-f-döngü –

    cevap

    4
    @echo off 
    setlocal enabledelayedexpansion 
    set /a counter=1 
    for /r %%i in (*.docx) do (
    
        echo !counter! %%~nxi >> search_result.txt 
        set /a counter=!counter!+1 
    ) 
    endlocal 
    
    0

    , sadece bir değişken kullanın ve her döngü tekrarında ile bir artıracaktır başladı. Bunun çalışması için değişkenlerin gecikmeli olarak genişlemesini etkinleştirmeniz gerekir; bu, değişkenin ilk değerlendirildiğinde ve her yinelemede kullanılan aynı genişletilmiş değişkendeki değişkeni engeller. Daha sonra! Sayacını kullanarak değişkeni referans alabilirsiniz! % genişletilmiş% yerine.

    Böyle bir şey çalışması gerekir düşünüyorum ama bunu ince ayar gerekebilir yüzden çalıştırmak değil:

    @echo off 
    setlocal ENABLEDELAYEDEXPANSION 
    set /a counter=1 
    for /r %%i in (*.docx) do (
        echo !counter! %%~nxi >> search_result.txt 
        set /a counter=!counter!+1 
    ) 
    endlocal 
    

    Kontrol dışarı gecikmeli genişleme bazı daha fazla bilgi için bu cevap: How do I increment a DOS variable in a FOR /F loop?

    İlgili konular