中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-08-04 05:46
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 关于set的用法问题! 查看 753 回复 2
楼 主 关于set的用法问题! 发表于 2007-04-19 19:02 ·  中国 河北 廊坊 联通
初级用户
积分 108
发帖 35
注册 2007-04-12 15:23
19年会员
UID 84897
性别 男
来自 河北廊坊
状态 离线
例:
@echo off&setlocal enabledelayedexpansion
set n=abc987
set "m="
set /p=!n:~-6!<nul
set /p=!m:~0,3!<nul
pause

其中 为退格符,请问set /p=!m:~0,3!<nul,不是不表示显示3个退格符,也就是删除三个字符,在本例中最后结果为abc,但是我运行后最后的结果为abc98,百思不得其解,请问这是为什么啊?
2 发表于 2007-04-19 21:33 ·  中国 浙江 杭州 华数宽带
银牌会员
★★★
积分 2,000
发帖 621
注册 2007-01-01 00:00
19年会员
UID 75212
性别 男
状态 离线
因为这一句输出后有最后还有两个空格
set /p=!n:~-6!<nul
把上面这句改成
set /p"=!n:~6!!"<nul

强烈建议以后用到set时尽量加双引号;
不然以后你会经常碰到多了空格或者因为空格而截断的问题;
而且往往要浪费挺多时间去找这个错误;
最好养成加引号的良好习惯
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
caucfeiyu +2 2007-04-19 22:50
3 发表于 2007-04-19 22:50 ·  中国 河北 廊坊 联通
初级用户
积分 108
发帖 35
注册 2007-04-12 15:23
19年会员
UID 84897
性别 男
来自 河北廊坊
状态 离线
解决了,谢谢高手了!加分!
论坛跳转: