![Script por lotes para obtener el nombre del archivo de expresión coincidente en una carpeta](https://rvso.com/image/1642364/Script%20por%20lotes%20para%20obtener%20el%20nombre%20del%20archivo%20de%20expresi%C3%B3n%20coincidente%20en%20una%20carpeta.png)
Usando un script por lotes, voy dentro de la carpeta y en esa carpeta tengo diferentes archivos como:
ABc.txt
Pqr.png
.
.
Test-1.2.0.zip
De estos archivos, quiero obtener el nombre de un archivo que comienza con Test
y tiene extensión .zip
. En este caso, Test-1.2.0.zip
. Ya que su versión podría ser dinámica.
¿Podría ayudarme con el script por lotes para buscar Test-1.2.0.zip
y devolver como resultado?
Respuesta1
Al hacer clic derecho en el logotipo de Windows en la barra de inicio, elija "ejecutar" de la lista y ábralo. Luego escriba esta palabra "reciente" y haga clic en Aceptar. Se abrirá una carpeta reciente en su computadora portátil. Intente buscar en ella su archivo.
Respuesta2
Intente usar un For /F
bucle con:
where .:Strings/Characters+Wildcard+String/Characters
El where
comando asume "."
un carácter literal, no una expresión regular de 1 dígito/carácter:
1 Digit/character <==> ?
1 or More Digit/Character <==> *
Test- 1 Digit/Character . 1 Digit/Character . 1 Digit/Character.zip <==> Test-?.?.?.zip
Test- 1 Digit/Character . 1 Digit/Character . 1 or More Digit/Character: <==> Test-?.?.*.zip
- Usar
For /F
con (%%~nxi
norteame yXTensión)
@echo off
for /f useback^tokens^=* %%i in (`where .:"Test-?.?.?.zip"`)do echo\%%~nxi
- Para Powershell:
Get-ChildItem -File '*.zip'| Where-Object {$_.Name -like 'Test-?.?.?.zip'} | Select-Object -ExpandProperty Name
# Or..
ls -af '*.zip'| ? {$_.Name -like 'Test-?.?.?.zip'} |select -Exp Name
- Resultados:
Test-1.2.0.zip
Test-1.2.1.zip
Test-1.2.2.zip
Test-1.2.3.zip
Test-1.2.4.zip
Test-1.2.5.zip
Test-1.2.6.zip
Test-1.2.7.zip
Test-1.2.8.zip
Test-1.2.9.zip
for /f useback^tokens^=* %%i in (`where .:"Test-?.?.*.zip"`)do echo\%%~nxi
- Para Powershell:
Get-ChildItem -File '*.zip'| Where-Object {$_.Name -like 'Test-?.?.*.zip'} | Select-Object -ExpandProperty Name
# Or..
ls -af '*.zip'| ? {$_.Name -like 'Test-?.?.*.zip'} |select -Exp Name
- Resultados:
Test-1.2.0.zip
Test-1.2.1.zip
Test-1.2.10.zip
Test-1.2.11.zip
Test-1.2.12.zip
Test-1.2.13.zip
Test-1.2.14.zip
Test-1.2.15.zip
Test-1.2.16.zip
Test-1.2.17.zip
Test-1.2.18.zip
Test-1.2.19.zip
Test-1.2.2.zip
Test-1.2.20.zip
Test-1.2.3.zip
Test-1.2.4.zip
Test-1.2.5.zip
Test-1.2.6.zip
Test-1.2.7.zip
Test-1.2.8.zip
Test-1.2.9.zip
- ParaReversoClasificarusar en código cmd/bat, para PowerShell agregar
for ... ^| Sort /r`) do ...
| Sort-Object -Descending
for /f useback^tokens^=* %%i in (`where .:"Test-?.?.*.zip"^|sort /r`)do echo\%%~nxi
- Para Powershell:
Get-ChildItem -File '*.zip'| Where-Object {$_.Name -like 'Test-?.?.*.zip'} | Select-Object -ExpandProperty Name | Sort-Object -Descending
# Or..
ls -af '*.zip'| ? {$_.Name -like 'Test-?.?.*.zip'} |select -Exp Name | Sort -Des
- Resultados:
Test-1.2.9.zip
Test-1.2.8.zip
Test-1.2.7.zip
Test-1.2.6.zip
Test-1.2.5.zip
Test-1.2.4.zip
Test-1.2.3.zip
Test-1.2.20.zip
Test-1.2.2.zip
Test-1.2.19.zip
Test-1.2.18.zip
Test-1.2.17.zip
Test-1.2.16.zip
Test-1.2.15.zip
Test-1.2.14.zip
Test-1.2.13.zip
Test-1.2.12.zip
Test-1.2.11.zip
Test-1.2.10.zip
Test-1.2.1.zip
Test-1.2.0.zip
Algunas lecturas adicionalescmd/murciélago
Algunas lecturas adicionalespotencia Shell
Respuesta3
@echo off
for /f useback^tokens^=* %%i in (`where .:"temp-?.?.*.tar.gz"`)do echo\%%~nxi
esta solución funcionó para mí en un script por lotes
?representa 1 dígito/carácter yestrella(*)char representa 1 o más dígitos/carácter