批处理文件 - 设置

时间:2014-07-08 14:18:41

标签: batch-file

我想在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

3 个答案:

答案 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