我的
Windows批处理文件中有以下字符串:
"-String"
该字符串还包含字符串开头和结尾的两个引号,如上所述.
我想剥离第一个和最后一个字符,以便我得到以下字符串:
-String
我试过这个:
set currentParameter="-String" echo %currentParameter:~1,-1%
这将打印出应该是的字符串:
-String
但是当我尝试像这样存储编辑过的字符串时,它会失败:
set currentParameter="-String" set currentParameter=%currentParameter:~1,-1% echo %currentParameter%
什么都没打印出来.我做错了什么?
这真的很奇怪.当我删除这样的字符时,它可以工作:
set currentParameter="-String" set currentParameter=%currentParameter:~1,-1% echo %currentParameter%
打印出来:
-String
但实际上我的批次有点复杂,并且它不起作用.我将展示我编程的内容:
@echo off
set string="-String","-String2"
Set count=0
For %%j in (%string%) Do Set /A count+=1
FOR /L %%H IN (1,1,%COUNT%) DO (
echo .
call :myFunc %%H
)
exit /b
:myFunc
FOR /F "tokens=%1 delims=," %%I IN ("%string%") Do (
echo String WITHOUT stripping characters: %%I
set currentParameter=%%I
set currentParameter=%currentParameter:~1,-1%
echo String WITH stripping characters: %currentParameter%
echo .
)
exit /b
:end
输出是:
. String WITHOUT stripping characters: "-String" String WITH stripping characters: . . String WITHOUT stripping characters: "-String2" String WITH stripping characters: ~1,-1 .
但我想要的是:
. String WITHOUT stripping characters: "-String" String WITH stripping characters: -String . . String WITHOUT stripping characters: "-String2" String WITH stripping characters: -String2 .
你正在括号内修改一个变量.注意 – 新值不会在同一个块中使用(除非您使用!而不是%来分隔变量 – 并在enabledelayedexpansion模式下运行).
或者只是将几行提取到另一个子函数中,使用()的简单行序列
或者只是将几行提取到另一个子函数中,使用()的简单行序列
招呼,Stach