中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-08 15:24
47,811 主题排行 / 349,895 发帖 / 今日 0 篇 / 48,253 会员排行
DOS批处理 & 脚本技术(批处理室) » 求解set命令“!!”格式使用?
可打印版本  846 / 3
第1楼 zxone 发表于 2008-02-26 12:23
初级用户 发帖 13 积分 38
求解set命令“!!”格式使用?
下面是别人写的批处理文件,主要是把ping命令里的部分英文单词翻译并原样输出。
对于 set ret=
echo %%i
for %%a in (%%i) do echo %%a &&if defined %%a (set ret=!ret!!%%a!) else set ret=!ret! %%a
if not "!ret!"=="" (set ret=!ret:time=时间! && echo !ret!) else echo.
)
特别是set ret=!ret!!%%a!的用法搞不清楚,目前也就是set命令的“!!”格式搞不大明白,请解惑!



@echo off
color f2
echo.
set for=于
set of=的
set with=用
set in=(以
set data:=数据
set milli-seconds:=毫秒为单位)
set Approximate=大约
set times=时间:
set round=来回
set trip=行程
set Reply=应答
set from=来自
set bytes=字节
set time=时间:
set timed=时间
set out=超过
set statistics=统计
set Packets:=包:
set Sent=已发送=
set Received=已收到=
set Lost=已丢失=
set loss)=丢失)
set Minimum=最小值=
set Maximum=最大值=
set Average=平均值=
set TTL=TTL=
setlocal enabledelayedexpansion
set a=
set/p a=请输入要ping的网址或IP
for /f "delims=" %%i in ('ping %a%') do (
set ret=
echo %%i
for %%a in (%%i) do echo %%a &&if defined %%a (set ret=!ret!!%%a!) else set ret=!ret! %%a
if not "!ret!"=="" (set ret=!ret:time=时间! && echo !ret!) else echo.
)
pause>nul
第2楼 huahua0919 发表于 2008-02-26 14:41
银牌会员 发帖 780 积分 1,608
递归调用
尝试以下代码:
第3楼 zxone 发表于 2008-02-26 21:29
初级用户 发帖 13 积分 38
感谢二楼,终于搞懂了这个bat
:: if not "!ret!"=="" (set ret=!ret:time=时间! && echo !ret!) else echo.里的echo !ret!用于输出
:: set ret=!ret:time=时间!的含义是用“时间”替代“time”,但完全没有用处。
:: if not "!ret!"=="" echo !ret!如果以如此格式执行,即没有括号,也能正确输出,但有变化。
第4楼 jia332 发表于 2008-05-17 13:38
初级用户 发帖 81 积分 160
还是没有看明白,继续努力中
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023