Назад | Перейти на главную страницу

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

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

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

установить vSourcenm = tester.txt

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

установить vTargettyp =% vSourcenm: ~ 4%

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

установите str_len = 10 (это считается с циклом)

установить vTargetnm =% vSourcenm: ~ 0, -% str_len%% _% vDateTimeStamp %% vTargettyp%

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

tester_21062016_0908.txt

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

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

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% основан на региональных настройках системы, поэтому вам нужно убедиться, что они настроены на то, что вам нужно, прежде чем пытаться анализировать их в пакетном режиме.