标题: cmd /c后,如何将%1赋给其他变量
[打印本页]
作者: wowfans
时间: 2008-4-1 15:22
标题: cmd /c后,如何将%1赋给其他变量
曾经有一个右键设置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赋值不成功。。。。
哪位大虾帮忙优化下
作者: abcd
时间: 2008-4-1 16:09
@="cmd /c @Echo y|cacls \"%~d1\" /t /c /p everyone:n"
作者: fastslz
时间: 2008-4-1 16:11
Windows Registry Editor Version 5.00
@="测试获取到的变量"
@="Cmd.exe /c \"@for /f \"delims=*\" %%a in (\"%1\") do @echo \"%%~da\"&pause\""
作者: faultcode
时间: 2008-4-1 17:21
set c=%1 & echo %c% 这一句存在变量延迟 所以得不到 %C%的值
作者: wowfans
时间: 2008-4-1 18:45
用3楼的方法解决了
多谢大家·呵呵
作者: xhy999
时间: 2008-4-1 23:40
高手可真多啊