Получение определенного файла из .tar-файла в Bat-файле

#windows #batch-file #command-line #extract #tar

#Windows #пакетный файл #командная строка #извлечь #tar

Вопрос:

Я хочу извлечь определенный файл с именем WholeImage.jpg из .tar файла в Windows.

Я заставил его работать в одном конкретном случае, в котором я указываю точное местоположение файла в .tar файле:

 tar -xf %~1 --strip-components 5 InspectionProjectList/InspectionProject0718/InspectionProgram001/Sensing/Board0003/WholeImage.jpg
 

Задача --strip-components 5 состоит в том, чтобы избавиться от ненужных папок при извлечении нужного файла.

Однако путь к файлу для WholeImage.jpg изменений из tar-файла в tar-файл.

Части, которые изменяются, отмечены здесь знаком доллара:

 InspectionProjectList/InspectionProject$$/InspectionProgram$$/Sensing/Board$$/WholeImage.jpg
 

Комментарии:

1. Если Wholeimage.jpg в этом архиве есть только один экземпляр, что плохого в использовании: @"%__AppDir__%tar.exe" -x --strip-components 5 -f "%~1" "*WholeImage.jpg" ?

2. Если существует несколько изображений с таким именем, то вам, возможно, придется запустить @"%__AppDir__%tar.exe" -tf "%~1" "*WholeImage.jpg" и передать результаты, findstr.exe чтобы сначала найти нужную вам строку элемента. (это также может дать вам возможность определить количество компонентов каталога для удаления) . Очевидно, что в обоих примерах %__AppDir__% предполагается, что вы используете встроенную tar.exe утилиту Windows 10; измените местоположение, если вашего нет в WindowsSystem32