新手求解:批处理call时传递值问题

主要是想替换配置文件中指定配置项的值但第一个for中else(call:next%%a)传递值失败,打印出来只有zhangsan、lisi这些配置项,后面的值都丢了其实两... 主要是想替换配置文件中指定配置项的值
但第一个for中else (call :next %%a)传递值失败,打印出来只有zhangsan、lisi这些配置项,后面的值都丢了
其实两个for嵌套一起问题就解决了,但还是想知道为啥传值失败

配置文件格式:
#zhangsan
zhangsan = woman
#lisi
lisi = man

代码如下:
del /q 123.txtnew

set root=e:
set dir=E:\test\
set filename=123.txt
set porperties=zhangsan
set value=man

%root%
cd %dir%

for /f "delims=" %%a in (%filename%) do (
if "%%a:~0,1"=="#" (echo %%a >> %filename%new) else (call :next %%a)
)

:next
echo 输出:%1 >> %filename%new
for /f "tokens=1,* delims== " %%i in ("%1") do (
if "%%i"=="%porperties%" (echo %%i=%value% >> %filename%new) else (echo %%i=%%j >> %filename%new)
)
展开
 我来答
yyykkkyyyy
2012-01-02 · TA获得超过3136个赞
知道大有可为答主
回答量:2691
采纳率:40%
帮助的人:3294万
展开全部
仅就call 参数“失败”说一下
你没想到“=”也是分隔符,除了空格,Tab空外还有这么几种 , ; = 都会被当成分隔符的
因此%1 仅代表“=”之前部分,之后部分认为是%2... 想要整体作为一个参数在call 时得用引号括起来,而用时又不想要引号,可用%~1就行了
启帆信息
2024-11-19 广告
启帆信息是英伟达中国区代理商,原厂授权代理,提供全面的软件技术解决方案以及NVIDIA以太网产品、交换机等产品,欢迎前来咨询!... 点击进入详情页
本回答由启帆信息提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式