2014-07-08 110 views
0

我想獲得dir=%dir:~-這裏%變種。我發現這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%目錄。如果有人瞭解我的,我問你有沒有辦法做到這一點? 日Thnx

回答

2

如果你想擴展在一條線上的變量兩次,你需要使用延遲擴展:

setlocal EnableDelayedExpansion 
set var=2 
echo dir=!dir:~-%var%! > file.txt 

第一膨脹發生在%var%,第二(延遲)膨脹發生在!dir:~-2!

EDIT:另一種可能的方式是使用call命令使得該線是再次解析:

set var=2 
call echo dir=%%dir:~-%var%%% > file.txt 

當行被解析所述第一時間時,執行第一膨脹:

call echo dir=%dir:~-2% > file.txt 

call命令導致該行再次被解析並獲得最終結果。

3
@echo off 

    setlocal enabledelayedexpansion 
    set "var=-2" 

    echo !cd:~%var%! 

使用可變子操作中的變量,最簡單的方法是使用延遲擴展

0

這裏是另一種方法來做你的例子。

使用call這種方式導致^字符的問題,並且比延遲擴展相對慢。

@echo off 
set dir=aaabbbccc 
set var=3 
>file.txt call echo dir=%%dir:~-%var%%% 
pause