2011-09-11 25 views

Respuesta

2

¿Estoy asumiendo los archivos de comandos Command Prompt/MS-Dos aquí?

Si usted es entonces lamentablemente la respuesta es no, los comodines únicamente que el viejo y simple apoyo archivos por lotes son:

* = match all 

y ? = Match 1

manera:

 mytune*.mp? 

coincidiría:

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

Sin embargo, hay una alternativa ...

Si su uso de una versión moderna de Windows, entonces es probable que tendrá Power-Shell instalado, haga clic en

start-> ejecutar y escriba power-shell y presione return, si obtiene lo que parece una ventana de símbolo del sistema abierta entonces la tiene instalada, si no, busque una descarga en el sitio de MS.

Una vez que tenga esto, si quieres bucear en línea recta, se puede encontrar todo lo que necesita en el Reg-EX es PS aquí:

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

obstante lo haría, recomendamos pasar una hora o así aprendiendo lo básico primero.

+0

Sí, lo adivinaste Estoy hablando de Windows Lote Supuse que no existe tal cosa, pero no está de más preguntar De todos modos, gracias :) – Ori

+0

Absolutamente ... PowerShell sin duda hará lo que quieras, y puede ser utilizado en lugar de archivos por lotes. – shawty

1

There is in findstr. Salida THIS

+1

findstr busca solo dentro de los archivos de una cadena determinada, en este caso creo que el OP estaba activado sobre las expresiones regulares de línea de comandos. – shawty

+0

Y si escribe un resultado de comando en un archivo, puede buscarlo con 'findstr'. –

10

Parte de este crédito corresponde a la respuesta de Y.A.P.

El siguiente código le conseguirá todos los archivos en el directorio con al menos un dígito en el nombre del archivo:

@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 

FindStr La línea contiene la expresión de expresiones regulares. La versión de línea de comando de regex es limitada. ¿Qué rango exacto buscas y en qué formato están los nombres de archivo?

Si, por ejemplo, sabía que todos los archivos tenían números de 3 dígitos, podría limitarlo a todos los elementos del 000 al 299 con la expresión [0-2][0-9][0-9].

+0

Muchas gracias, podría ser lo que estaba buscando – Ori

+1

Hola, uno podría deshacerse del archivo intermedio 'Dir.temp' al canalizar la salida de' dir/B' a 'findstr'. Me gusta esto 'dir/B | findstr/R "[0-9]"> FindStr.temp'. De lo contrario, una muy buena publicación, me ayudó mucho. ¡Aclamaciones! – Jagger

Cuestiones relacionadas