中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-27 03:55
中国DOS联盟论坛 » 其它操作系统综合讨论区 » cmd /c后,如何将%1赋给其他变量 查看 924 回复 5
楼 主 cmd /c后,如何将%1赋给其他变量 发表于 2008-04-01 15:22 ·  中国 海南 海口 联通
初级用户
积分 56
发帖 21
注册 2007-04-07 11:11
19年会员
UID 84278
性别 男
状态 离线
曾经有一个右键设置NTFS权限的注册表文件
[HKEY_CLASSES_ROOT\Drive\shell\cacls3]
@="NTFS分区拒绝访问"
[HKEY_CLASSES_ROOT\Drive\shell\cacls3\command]
@="cmd /c set c=%1 & set c=%c:~0,-1% & @Echo y|cacls \"%c%\" /t /c /p everyone:n"
这个操作不成功,检查发现是%1变量根本没有赋给C,例如在F盘右击,%1就是F:\,想提取出F:都不行
测试过程如下

导入以下注册表
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Drive\shell\cacls3]
@="测试获取到的变量"

[HKEY_CLASSES_ROOT\Drive\shell\cacls3\command]
@="cmd /c echo %1 & set c=%1 & echo %c% & set c=%c:~0,-1% & echo %c% & pause"

然后在D:盘右击,选择 测试获取到的变量
得到的结果却是
D:\
c
c
Press any key to continue . . .


我想要的结果是
D:\
D:\
D:
Press any key to continue . . .


也就是对变量c赋值不成功。。。。

哪位大虾帮忙优化下
2 发表于 2008-04-01 16:09 ·  中国 北京 华为云
银牌会员
★★★
积分 1,436
发帖 739
注册 2007-10-11 17:44
18年会员
UID 99469
性别 男
状态 离线
@="cmd /c @Echo y|cacls \"%~d1\" /t /c /p everyone:n"
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
wowfans +2 2008-04-01 18:44
3 发表于 2008-04-01 16:11 ·  中国 上海 松江区 电信
铂金会员
★★★★
DOS一根葱
积分 5,493
发帖 2,315
注册 2006-05-01 10:41
20年会员
UID 54766
性别 男
来自 上海
状态 离线
Windows Registry Editor Version 5.00



@="测试获取到的变量"

@="Cmd.exe /c \"@for /f \"delims=*\" %%a in (\"%1\") do @echo \"%%~da\"&pause\""


本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
wowfans +2 2008-04-01 18:44
第一高手 第二高手

4 发表于 2008-04-01 17:21 ·  中国 江苏 苏州 电信
初级用户
★★
积分 120
发帖 60
注册 2007-10-26 22:42
18年会员
UID 100889
性别 男
状态 离线
set c=%1 & echo %c% 这一句存在变量延迟 所以得不到 %C%的值
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
wowfans +2 2008-04-01 18:45
5 发表于 2008-04-01 18:45 ·  中国 海南 海口 联通
初级用户
积分 56
发帖 21
注册 2007-04-07 11:11
19年会员
UID 84278
性别 男
状态 离线
用3楼的方法解决了
多谢大家·呵呵
6 发表于 2008-04-01 23:40 ·  中国 浙江 金华 电信
新手上路
积分 8
发帖 4
注册 2008-04-01 22:45
18年会员
UID 114697
性别 男
状态 离线
高手可真多啊
论坛跳转: