dos批处理下变量内容替换的问题
4个回答
展开全部
如果能确定那变量a里含有、且仅含一个 “* ”,且不会在第一的位置,那这种 for /f 方法就是正确的,不然麻烦哦,主要是如有连续*不好处理
我写的这个还得假定变量a里再无别的特殊符:
@echo off&setlocal enabledelayedexpansion
set a=abc*d*ef*
set s=y
set aa=%a%
:r
if "!aa:~%n%,1!"=="*" (set/a m=n+1
set b=!b!!aa:~,%n%!%s%
call set aa=%%aa:~!m!%%
set n=0)else set/a n+=1
if defined aa goto r
echo b=%b%
pause
我写的这个还得假定变量a里再无别的特殊符:
@echo off&setlocal enabledelayedexpansion
set a=abc*d*ef*
set s=y
set aa=%a%
:r
if "!aa:~%n%,1!"=="*" (set/a m=n+1
set b=!b!!aa:~,%n%!%s%
call set aa=%%aa:~!m!%%
set n=0)else set/a n+=1
if defined aa goto r
echo b=%b%
pause
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
二楼方法正确,但有点粗心没看清题目,建议采纳二楼。
@echo off
set "x=abc*def"
for /f "tokens=1-2delims=*" %%i in ("%x%") do set "x=%%iy%%j"
echo %x%
pause
@echo off
set "x=abc*def"
for /f "tokens=1-2delims=*" %%i in ("%x%") do set "x=%%iy%%j"
echo %x%
pause
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可借助for /f实现替换:
@echo off
set "x=abc*def"
for /f "tokens=1-2delims=*" %%i in ("%x%") do set "x=%%ix%%j"
echo %x%
pause
@echo off
set "x=abc*def"
for /f "tokens=1-2delims=*" %%i in ("%x%") do set "x=%%ix%%j"
echo %x%
pause
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
没测试
估计是在*符号前面加上转义符号^
或者用引号框住
估计是在*符号前面加上转义符号^
或者用引号框住
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询