Пакет: использование числовой переменной при установке другой переменной с функцией конкатенации?

Надеюсь, кто-то может мне помочь в этом:

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

set vSourcenm = tester.txt

Определяет переменную типа файла, например ".txt"

set vTargettyp =% vSourcenm: ~ 4%

set vDateTimeStamp = 21062016_0908 (упрощенный - устанавливает дату и время )

set str_len = 10 (это считается с помощью цикла)

set vTargetnm =% vSourcenm: ~ 0, - % str_len% % _% vDateTimeStamp %% vTargettyp%

Вывод vTargetnm должен быть:

tester_21062016_0908.txt

Спасибо за любые подсказки!

0
задан 21 June 2016 в 10:13
1 ответ

Это потребовало использования отложенного раскрытия, чтобы позволить вычислить число в переменной перед подстрокой.

setlocal enabledelayedexpansion

set vSourcenm=tester.txt

rem Defines a Variable of the Filetype like ".txt"
set vTargettyp=%vSourcenm:~4%

rem define how much of the string to remove [equal to the part saved to the extension
set str_len=4

rem Remove the extension from the filename
set vSourcenm=!vSourcenm:~0,-%str_len%!

REM (Simplified - sets the Date and Time)
set vDateTimeStamp=21062016_0908

set vTargetnm=!vSourcenm!_!vDateTimeStamp!!vTargettyp!

echo !vTargetnm!

pause

Ваш вопрос не согласуется с выводом примера,поэтому для str_len было установлено значение 4, чтобы продемонстрировать отложенный синтаксический анализ переменных среды.

Кроме того, выходные данные % DATE% и % TIME% основаны на региональных настройках системы, поэтому вы должны убедиться, что они установлены на то, что вам нужно, прежде чем пытается проанализировать их в пакетном режиме.

0
ответ дан 5 December 2019 в 10:15

Теги

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