¿Cómo se copian archivos usando una línea de comando cuando el archivo tiene cuatro o menos caracteres en el nombre del archivo?

¿Cómo se copian archivos usando una línea de comando cuando el archivo tiene cuatro o menos caracteres en el nombre del archivo?

intentando copiar archivos con cuatro o menos caracteres en el nombre del archivo con una determinada extensión a una nueva carpeta. ¡Intenté hacer esto durante varias horas! frustrarse. ¿Utilicé el comando copiar y el comodín? y *

Respuesta1

Como AFH señaló en los comentarios, un simple "COPIAR ????.ext" funcionará en nombres de archivos de cuatroo menoscaracteres. En la coincidencia de patrones de estilo global en sistemas basados ​​en DOS, * significa "0 o más caracteres" y aparentemente ? significa cero o un carácter. Sin embargo, asegúrese de comprender que este tipo de coincidencia de patrones se realiza a nivel de aplicación; es decir, Windows (y DOS, de hecho), pasa la línea de comando exactamente como se escribió al programa a ejecutar. Si escribe "????.ext", eso es exactamente lo que ve el comando COPIAR.

Compare esto con otros shells con los que he trabajado, como en un*x (bash, tcsh, etc.), donde el intérprete de comandos primero expande todas las coincidencias de patrones y pasa la lista completa de archivos al comando. Es decir, en esos shells, si escribe "copiar archivo.", el shell llama "copiar archivo.1 archivo.2 archivo.3", "copiar" normalmente nunca ve el literal "archivo". argumento.

(Y es por eso que mi primera respuesta original fue incorrecta: la probé con un comando que eranoexpandiendo la forma en que lo habría hecho CMD.EXE de Windows... ¡Algo a tener en cuenta!)

No hay manera en la consola/línea de comando normal de Windows (que esno¡DOS, por cierto!) hacer esto con un solo comando por cierto? y * trabajar en Windows: ? coincide con un solo carácter y * coincide con tantos como sea posible. Tampoco te permite especificar un recuento. Pero al usar un archivo por lotes para ejecutar cada comando en secuencia, puede lograr el mismo efecto:

@echo off
copy "????.ext" "target folder"
copy "???.ext" "target folder"
copy "??.ext" "target folder"
copy "?.ext" "target folder"

Usando varias técnicas de archivos por lotes, también puede modificarlo para que funcione con otras longitudes de nombres de archivos, o usar diferentes carpetas de destino, etc.

Además, con los sistemas operativos Windows modernos, lo más probable es que tenga VBScript disponible a través de Windows Script Host, y con Win8, debería tener PowerShell, los cuales permiten una lógica de programación mucho más extensa, como potentes expresiones regulares, etc.

información relacionada