批处理:使用数字变量来设置具有连接函数的另一个变量?

批处理:使用数字变量来设置具有连接函数的另一个变量?

希望有人能帮助我:

我有一个批处理文件,我想在其中组合变量并包含一个带有变量号的函数用于连接 - 为了更好地理解,请参阅附加的脚本:

设置 vSourcenm=tester.txt

定义文件类型的变量,如“.txt”

设置 vTargettyp=%vSourcenm:~4%

设置 vDateTimeStamp=21062016_0908(简化 - 设置日期和时间)

设置 str_len=10 (这个用循环来计算)

设置 vTargetnm=%vSourcenm:~0,-%字符串长度%%_%v日期时间戳%%v目标类型%

vTargetnm 的输出应该 :

测试者_21062016_0908.txt

谢谢任何提示!

答案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%基于系统区域设置,因此在尝试批量解析它们之前,您需要确保这些设置已设置为您需要的设置。

相关内容