【问题标题】:Delete and replace variables删除和替换变量
【发布时间】:2014-06-08 07:23:35
【问题描述】:

假设我们有 4 个变量,例如:

set var1=Hello
set var2=Some text
set var3=Some more text
set var4=Even some more text

然后提示用户删除其中一个,本例(1-4)如:

set /p delete_one="Delete one:"

如果用户写了例如“2”,那么新变量将是:

var1=Hello
var2=Some more text
var3=Even some more text 

我将如何进行这项工作?

【问题讨论】:

    标签: batch-file cmd command-prompt


    【解决方案1】:
    @echo off
    setlocal EnableDelayedExpansion
    
    set var1=Hello
    set var2=Some text
    set var3=Some more text
    set var4=Even some more text
    
    SET VAR
    
    set /p delete_one="Delete one: "
    
    set "Xvar="
    for /F "tokens=1,2 delims==" %%a in ('set var') do (
       if defined Xvar (
          set "!Xvar!=%%b"
          set "Xvar=%%a"
       ) else if "%%a" equ "var%delete_one%" (
          set "Xvar=%%a"
       )
    )
    set "%Xvar%="
    
    SET VAR
    

    您必须检查给定数量的要删除的变量是否存在。请注意,变量按字母顺序排序,因此如果存在超过 9 个变量,并且您希望保留其“自然顺序”,则小于 10 的变量必须具有左零:var01=Hello,并且您必须将此左零值赋予删除那个变量。

    【讨论】:

      【解决方案2】:
      @ECHO OFF
      SETLOCAL ENABLEDELAYEDEXPANSION
      set var1=Hello
      set var2=Some text
      set var3=Some more text
      set var4=Even some more text
      FOR /L %%a IN (5,1,12) DO SET var%%a=MORE text %%a
      
      SET VAR
      
      set /p delete_one="Delete one: "
      
      SET /a get=1
      SET /a put=1
      
      :loop
      IF %get%==%delete_one% SET /a get+=1
      IF %get%==%put% GOTO next
      SET var%put%=!var%get%!
      :next
      SET /a put+=1
      SET /a get+=1
      IF DEFINED var%get% GOTO loop
      SET "var%put%="
      
      SET VAR
      GOTO :EOF
      

      ...免疫 9 限制。

      【讨论】:

        猜你喜欢
        • 2013-03-18
        • 1970-01-01
        • 2018-05-16
        • 2016-07-22
        • 1970-01-01
        • 2012-07-23
        • 1970-01-01
        • 2015-03-15
        • 1970-01-01
        相关资源
        最近更新 更多