Как переименовать или создать zip-файл с именем его содержимого с помощью командного файла

самый простой

Самый простой способ - использовать хорошо спроектированную выделенную библиотеку для работы с датой.

someInterval.overlaps( anotherInterval )

java.time & амп; ThreeTen-Extra

Лучшим в бизнесе является структура java.time , встроенная в Java 8 и более поздние версии. Добавьте к этому проект ThreeTen-Extra , который дополняет java.time дополнительными классами, в частности классом Interval , который нам нужен здесь.

Что касается тег language-agnostic в этом Вопросе, исходный код для обоих проектов доступен для использования на других языках (помните о своих лицензиях).

Interval

Класс org.threeten.extra.Interval удобен, но для него требуются моменты времени дат (java.time.Instant), а не только значения даты , Поэтому мы переходим к использованию первого момента дня в UTC для представления даты.

Instant start = Instant.parse( "2016-01-01T00:00:00Z" );
Instant stop = Instant.parse( "2016-02-01T00:00:00Z" );

Создайте Interval для представления этого промежутка времени.

Interval interval_A = Interval.of( start , stop );

Мы также можем определить Interval с начальным моментом плюс Duration .

Instant start_B = Instant.parse( "2016-01-03T00:00:00Z" );
Interval interval_B = Interval.of( start_B , Duration.of( 3 , ChronoUnit.DAYS ) );

Сравнение с тестом на перекрытия очень просто.

Boolean overlaps = interval_A.overlaps( interval_B );

Вы можете сравнить Interval с другим Interval или Instant :

Все они используют подход Half-Open для определения промежутка времени, в котором начало включено , а окончание - exclusive .

2
задан Squashman 16 January 2019 в 14:46
поделиться

1 ответ

Если я правильно понял ваш вопрос, я думаю, вы хотите просто взять строку, отделить последнее имя каталога и затем использовать его в качестве переменной при настройке вашего zip-файла:

@echo off
set "mypath=C:\TEMP\zip\source\JEAR_20190115"
if "%mypath:~-1%"=="\" set "mypath=%mypath:~0,-1%"
for %%i in (%mypath%) do set "last=%%~nxi"
CScript zip.vbs %mypath% C:\TEMP\zip\target\%last%.zip

Пожалуйста, примите обратите внимание, если вы измените свой путь, чтобы иметь обратную косую черту на вашем пути, то есть:

C:\TEMP\zip\source\JEAR_20190115\

Вы могли бы сначала избавиться от этого, но мы могли бы просто проверить это с помощью:

[112 ]

Таким образом, полный сценарий будет выглядеть следующим образом:

@echo off
set "mypath=C:\TEMP\zip\source\JEAR_20190115"
if "%mypath:~-1%"=="\" set "mypath=%mypath:~0,-1%"
for %%i in (%mypath%) do set "last=%%~nxi"
CScript zip.vbs %mypath% C:\TEMP\zip\target\%last%.zip

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

@echo off
set "mypath=C:\TEMP\zip\source\JEAR_20190115"
for /f %%i in ('dir /b /a-d "%mypath%"') do set "last=%%~ni"
CScript zip.vbs %mypath% C:\TEMP\zip\target\%last%.zip
0
ответ дан Gerhard Barnard 16 January 2019 в 14:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: