2011-09-11 9 views

risposta

2

Sto presupponendo che stai parlando dei file batch di Command Prompt/MS-Dos qui?

Se siete allora purtroppo la risposta è no, i caratteri jolly soltanto che plain old supporto file batch sono:

* = match all 

e ? = Hanno 1

così:

 mytune*.mp? 

sarebbe partita:

 mytune01.mp3, mytune01.mpg, mytune-the-best.mpe 

C'è però un'alternativa ...

Se la vostra utilizzando una moderna versione di Windows, quindi è probabile che Avrai il power-shell installato, fai clic su

start-> esegui quindi digitare in power-shell e premere Invio, se si ottiene ciò che sembra una finestra del prompt dei comandi aperta, allora è stata installata, In caso contrario, controllare il sito MS per un download.

Una volta fatto questo, se si desidera immergersi direttamente in, è possibile trovare tutto ciò che serve su Reg-Ex è PS qui:

http://powershell.com/cs/blogs/ebook/archive/2009/03/30/chapter-13-text-and-regular-expressions.aspx

lo farei comunque, consiglia spendere un'ora o giù di lì imparare le basi prima.

+0

Sì, avete indovinato, sto parlando di Windows Batch Ho intuito che non esiste una cosa del genere, ma non fa male chiedere a Comunque grazie :) – Ori

+0

Assolutamente ... powershell farà sicuramente quello che vuoi, e può essere utilizzato al posto dei file batch. – shawty

1

C'è nel findstr. Check out THIS

+1

findstr cerca solo all'interno di file per una data stringa, in questo caso penso che l'OP fosse su espressioni regolari da riga di comando. – shawty

+0

E se si scrive un output di comando in un file, è possibile cercarlo con 'findstr'. –

10

Parte di questo credito va alla risposta di Y.A.P.

Il seguente codice si arriva tutti i file nella directory con almeno una cifra nel nome del file:

@Echo Off 
CD C:\Folder\To\Process 
Dir /B>Dir.temp 
FindStr /R "[0-9]" "Dir.temp">FindStr.temp 
Del Dir.temp 
For /F "tokens=*" %%a In (FindStr.temp) Do Call :WorkIt "%%a" 
Del FindStr.temp 
Exit /B 

:WorkIt 
:: Insert code here. Use %1 to get the file name with quotes. For example: 
Echo Processing %1... 
Exit /B 

La linea FindStr contiene l'espressione regex. La versione della regex della riga di comando è limitata. Qual è l'intervallo esatto che cerchi e in che formato sono i nomi dei file?

Se, ad esempio, sapevate che tutti i file contenevano 3 numeri di cifre, è possibile limitarlo a tutti gli elementi da 000 a 299 con l'espressione [0-2][0-9][0-9].

+0

grazie, potrebbe essere quello che stavo cercando – Ori

+1

Ciao, uno potrebbe sbarazzarsi del file intermedio 'Dir.temp' convogliando l'output di' dir/B' a 'findstr'. Ti piace questo 'dir/B | findstr/R "[0-9]"> FindStr.temp'. Altrimenti, un post molto buono, mi ha aiutato molto. Saluti! – Jagger

Problemi correlati