2017-02-24 263 views
0

我想写一个批处理文件来构建基于模板战争的一些战争文件。我有一个名称输入列表,并且想要将名称解析为可变的子字符串。子串不总是相同的长度。变量替换中的批处理文件变量

我知道字符串的结尾,并希望将它的开头存储在变量中。当我尝试切断尾字符串时,它无法读取它。这是这段代码中的最后一行。我如何在这里使用变量?

@echo off 
setlocal EnableDelayedExpansion 
(for /F "tokens=*" %%d in (themeCompiler/themeList.txt) do (
    echo %%d 
    set dirname=%%d 
     REM set environment 
     if not "!dirname!"=="!dirname:DEV=!" (
      set env=DEV 
     ) 
     if not "!dirname!"=="!dirname:TST=!" (
      set env=TST 
     ) 
     if not "!dirname!"=="!dirname:PRD=!" (
      set env=PRD 
     ) 
     echo !env! 
     REM check which node to use 
     if not "!dirname!"=="!dirname:admin=!" (
      set nodename=admin 
     ) 
     if not "!dirname!"=="!dirname:portal=!" (
      set nodename=portal 
     ) 
     REM build name of theme war 
     set endString=-!env!-theme-!nodename! 
     echo endString !endString! 
     set vpdi=!dirname:LP5-=! 
     set vpdi2=!vpdi:!endString!=! 

从themeList.txt

LP5-CCA-TST-theme-portal 
LP5-CCCO-PRD-theme-admin 
LP5-CCCO-PRD-theme-portal 
LP5-CCCO-TST-theme-admin 
LP5-CCCO-TST-theme-portal 
LP5-CCCS-DEV-theme-admin 
+0

一个例子设置字符串将使帮助轻松很多...... – aschipfl

+0

你不能做字符串替换用像这样延期扩张。替换字符串需要正常扩展。 – Squashman

+0

你是怎么做到的? – rrayas

回答

1

使用解析for /f正确

@echo off 
for /F "tokens=1-4* delims=-" %%A in (themeCompiler/themeList.txt) do (
    echo %%A-%%B-%%C-%%D-%%E 
    echo 1st token = %%A 
    echo 2nd token vpdi2 = %%B 
    echo 3rd token env = %%C 
    echo 4th token = %%D 
    echo 5th token nodename = %%E 
)