我想在dir=%dir:~-
%
获取一个var。
我发现这个dir=%dir:~-%var%%
不幸的是,这不起作用。
然后我试了一下:
set var=2
echo dir=%%dir:~-%var%%% > file.txt
for /f "tokens=* delims=" %%a in (file.txt) do set dir=%%a
但是真实的%dir:~-2%
是dir。如果有人理解我,我问你有办法吗?
日Thnx
答案 0 :(得分:3)
@echo off
setlocal enabledelayedexpansion
set "var=-2"
echo !cd:~%var%!
要在变量子字符串操作中使用变量,最简单的方法是使用延迟扩展
答案 1 :(得分:2)
如果要在行中扩展变量,则需要使用延迟扩展:
setlocal EnableDelayedExpansion
set var=2
echo dir=!dir:~-%var%! > file.txt
第一次扩展发生在%var%
,第二次扩展发生在!dir:~-2!
。
编辑:另一种可能的方法是使用call
命令导致该行再次解析:
set var=2
call echo dir=%%dir:~-%var%%% > file.txt
第一次解析该行时,将执行第一次扩展:
call echo dir=%dir:~-2% > file.txt
call
命令导致再次解析该行并获得最终结果。
答案 2 :(得分:0)
以下是使用您的示例执行此操作的另一种方法。
使用call
这种方式会导致^
字符出现问题,并且比延迟扩展速度慢。
@echo off
set dir=aaabbbccc
set var=3
>file.txt call echo dir=%%dir:~-%var%%%
pause