2013-05-15 1 views
8

Per favore aiuto! Ho una novità nella creazione di file batch.Come posso creare un file batch per cercare i file con determinate estensioni all'interno di una cartella?

Sto cercando di creare un file batch per fare le seguenti cose:

  1. Ricerca di file (s) con un'estensione certo file (cioè con estensione docx) all'interno di una cartella
  2. uscita sia il nome del file (s) e l'estensione ad un file di testo (.txt)
  3. Nel file di testo, voglio aggiungere un indice prima del nome del file

ad esempio, "cartella 1" ha questi tre file: test1. docx, test2.docx, test3.xlsx Il file batch cercherà questi tre file che hanno l'estensione con .docx e quindi l'output in un file di testo (ad es. search_result.txt)

Nel search_result.txt, avrà questo formato:

1 test1.docx
2 test2.docx

Ecco quello che ho finora che sta facendo # 1 e # 2 articoli menzionati sopra, ma ho bisogno di aiuto per implementare il # 3.

@echo off 
for /r %%i in (*.docx) do echo %%~nxi >> search_result.txt 

Grazie in anticipo per l'aiuto.

+0

Cosa significa "aggiungi un indice prima del nome del file"? –

+0

penso che voglia dire 'numero indice'/numero seriale: 1, 2, 3 ... @ robert-harvey – tgkprog

+0

vedi anche http://stackoverflow.com/questions/2913231/how-do-i-increment-a- dos-variabile-in-a-per-f-loop –

risposta

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

Supponendo che l'indice è solo un conteggio di incremento del numero di partite, si potrebbe utilizzare una variabile e incrementarlo con ogni iterazione del ciclo. È necessario abilitare l'espansione ritardata delle variabili affinché questo funzioni, evitando che la variabile venga spesa quando il ciclo viene valutato per la prima volta e la stessa variabile espansa utilizzata per ciascuna iterazione. Puoi quindi fare riferimento alla variabile usando! Contatore! piuttosto che% espanso%.

penso che qualcosa di simile dovrebbe funzionare ma non ho eseguito in modo che lei potrebbe aver bisogno di modificarlo:

@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 

Partenza questa risposta per un po 'più informazioni in ritardo di espansione: How do I increment a DOS variable in a FOR /F loop?