希望有人能帮助我:
我有一个批处理文件,我想在其中组合变量并包含一个带有变量号的函数用于连接 - 为了更好地理解,请参阅附加的脚本:
设置 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%
基于系统区域设置,因此在尝试批量解析它们之前,您需要确保这些设置已设置为您需要的设置。