中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-22 14:18
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 提取计算机名称中的后三位 查看 756 回复 4
楼 主 提取计算机名称中的后三位 发表于 2009-02-02 13:13 ·  中国 上海 奉贤区 电信
初级用户
积分 28
发帖 17
注册 2008-12-20 14:05
17年会员
UID 134438
性别 男
状态 离线
比如计算机名称为xc005
我想提取后三位,然后保存到一个文件,或者保存到一个变量!
hostname >hostname.txt
下边的不知道了!
应该如何操作。
谁可以告诉我!!!
谢谢!



转移自 DOS学习入门 & 精彩文章 (教学室)
从你所需要的结果来看你的问题似乎不属于 DOS 范畴,今后发帖请尽量发到对应的版块。
——管理员
2 发表于 2009-02-02 16:19 ·  中国 广东 广州 电信
银牌会员
★★★★
SuperCleaner
积分 2,362
发帖 1,133
注册 2008-02-02 21:36
18年会员
UID 110072
性别 男
状态 离线
可能这个可以 我不太了解
%USERDOMAIN:~-3%>hostname.txt

如果不对 多一步咯
hostname>hostname.txt
set /p a=<hostname.txt
echo,%a:~-3%>hostname.txt

(如果说的是纯dos 那我就不知道了)

[ Last edited by 523066680 on 2009-2-2 at 16:21 ]
3 发表于 2009-02-03 13:24 ·  中国 上海 奉贤区 电信
初级用户
积分 28
发帖 17
注册 2008-12-20 14:05
17年会员
UID 134438
性别 男
状态 离线
set /p a=<hostname.txt
echo,%a:~-3%>hostname.txt
set /p中的/p可以省略吗,我省略了,结果是hostname.txt里面的内容.
echo,%a:~3%>hostname.txt这句怎么理解?
最后的结果并没有出现后三位啊!
我发现这样就可以了:
@echo off
hostname>hostname.txt
for /f %%h in (hostname.txt) do set m=%%h
echo 计算名为:
echo %m%
set nodename=%m:~2%
echo nodename为:
echo %nodename%&&pause>nul


不过不明白,为什么在for语句中不可以直接截取后三位:
如:
for /f %%h in (hostname.txt) do set nodename=%%h:~3%
这样的话,命令会识别为nodename=x:~3%
有人指点下吗?
4 发表于 2009-02-03 17:13 ·  中国 广东 广州 电信
银牌会员
★★★★
SuperCleaner
积分 2,362
发帖 1,133
注册 2008-02-02 21:36
18年会员
UID 110072
性别 男
状态 离线
呕心沥血地说…… 用什么方法得 看条件 ,环境。。。。。。

而且我越看你说的越晕 %computername:~-3%就是了
你那台 %computername:~2%也可以 因为你那个是5个字符组成的计算机名
%computername:~-3%是为了通用 注意: 是 -3



(楼主是指纯DOS环境么 那个我就不懂了 )

[ Last edited by 523066680 on 2009-2-3 at 17:30 ]
5 发表于 2009-02-03 21:20 ·  中国 福建 三明 电信
中级用户
★★
积分 458
发帖 211
注册 2006-07-26 19:42
19年会员
UID 59307
状态 离线
用 hostname 命令:
@echo off
for /f %%h in ('hostname') do set m=%%h
echo %m:~-3%
pause


或如楼上据说,用系统环境变量 %computerName%
echo %computerName:~-3%
pause

注意有个负号。
┌───────┐
├→学习→实践→┤
└───────┘
论坛跳转: