我想从列表的每个元素中去除冒号 :
。我不清楚 for 循环上下文中的字符串替换语法。您如何操作每个 %%a
?
@echo off
setlocal EnableExtensions disabledelayedexpansion
set studies=sign1:chap2,sign2:chap3
for %%a in ("%studies:,=" "%") do (
echo %%~a
set var=%~a::=%
echo study %var%
)
答案 0 :(得分:0)
感谢@Squashman 的建议,这是解决方案:
@echo off
setlocal EnableExtensions EnableDelayedExpansion
set studies=sign1:chap2,sign2:chap3
for %%a in ("%studies:,=" "%") do (
set temp=%%~na
echo !temp::=!
)
答案 1 :(得分:0)
完全基于您发布的内容...
你可以使用这个:
@Echo Off
SetLocal EnableExtensions
Set "studies=sign1:chap2,sign2:chap3"
Set "}=%studies::=%"
Echo "%}:,=" "%"
Pause
对于这个输出:
"sign1:chap2" "sign2:chap3"
但是,由于这不是您现实世界的问题,因为您不会像这样手动定义 studies
变量,您可以根据需要精确地定义它:
@Echo Off
SetLocal EnableExtensions
Set "studies="sign1chap2" "sign2chap3""
Echo %studies%
Pause
您更有可能想要更像这样的东西:
@Echo Off
SetLocal EnableExtensions
Set "studies=sign1:chap2,sign2:chap3"
For %%G In (%studies::=%) Do Echo "%%~G"
Pause
对于这个输出:
"sign1:chap2"
"sign2:chap3"
如果情况并非如此(我怀疑),那么我已经回答了您本不想问的问题,因为您故意提供的信息不足以让我们为实际问题提供可靠的解决方案。
可能:
@Echo Off
SetLocal EnableExtensions DisableDelayedExpansion
Set "studies=sign1:chap2,sign2:chap3"
For %%G In ("%studies:,=" "%") Do (Set "}=%%~G"
SetLocal EnableDelayedExpansion
Echo !}::=!
EndLocal
)
Pause
甚至:
@Echo Off
SetLocal EnableExtensions
Set "studies=sign1:chap2,sign2:chap3"
For %%G In (%studies%) Do For /F "Tokens=1,* Delims=:" %%H In ("%%~G") Do Echo %%H%%I
Pause
有许多不同的答案排列,但由于您缺乏提供的信息或确切的预期结果,我们很难猜测哪种解决方案最适合您的情况。