Пакетный скрипт для получения соответствующего имени файла выражения в папке

Пакетный скрипт для получения соответствующего имени файла выражения в папке

Используя пакетный скрипт, я захожу в папку, а в ней у меня есть разные файлы, например:

ABc.txt
Pqr.png
.
.
Test-1.2.0.zip

Из этих файлов я хочу получить имя файла, который начинается с Testи имеет расширение .zip. В этом случае Test-1.2.0.zip. Так как его версия может быть динамической.

Не могли бы вы помочь мне с пакетным скриптом для поиска Test-1.2.0.zipи возврата в качестве вывода?

решение1

Щелкнув правой кнопкой мыши по логотипу Windows в панели пуска, выберите "Выполнить" из списка и откройте его. Затем напишите это слово "недавние" и нажмите ОК. Это откроет недавнюю папку на вашем ноутбуке, попробуйте поискать в ней ваш файл.

решение2

Попробуйте использовать For /Fцикл с:

where .:Strings/Characters+Wildcard+String/Characters

Команда whereпредполагает ".", что это буквальный символ, а не Regex 1 цифра/символ:

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
  • Использовать For /Fс (%%~nxiНаме еИксНапряжение)
@echo off 

for /f useback^tokens^=* %%i in (`where .:"Test-?.?.?.zip"`)do echo\%%~nxi
  • Для 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
  • Полученные результаты:
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
  • Для 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
  • Полученные результаты:
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

  • ДлярнаоборотСортироватьиспользовать в коде cmd/bat, для PowerShell добавитьfor ... ^| Sort /r`) do ...| Sort-Object -Descending
for /f useback^tokens^=* %%i in (`where .:"Test-?.?.*.zip"^|sort /r`)do echo\%%~nxi
  • Для 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
  • Полученные результаты:
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


решение3

@echo off

for /f useback^tokens^=* %%i in (`where .:"temp-?.?.*.tar.gz"`)do echo\%%~nxi

это решение сработало для меня в пакетном скрипте

?представляет собой 1 цифру/символ извезда(*)char представляет 1 или более цифр/символов

Связанный контент