标题: [其他] [已解决]求助批处理使用变量mklink不成功 [打印本页]
作者: sunkui1993 时间: 2019-7-19 17:43 标题: [已解决]求助批处理使用变量mklink不成功
本帖最后由 sunkui1993 于 2019-7-22 14:27 编辑
我设置了两个变量 TargetPath 和 LinkPath 。
然后本来是要执行“mklink /d G:\\SUNKUI\\LoadProjrct\\Content\\SyblicAssets G:\\Assets”这个命令
但是我用刚刚初始化的变量来代替了。
为什么这样执行不成功了呢 求大佬指点指点,万分感谢。
以下是源代码
------------------- @ echo off
- echo 正在启用超级管理员权限...
-
- %1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit
- cd /d "%~dp0"
-
- set TargetPath = G:\\SUNKUI\\LoadProjrct\\Content\\SyblicAssets
- set LinkPath = G:\\Assets
-
- mklink /d %TargetPath% %LinkPath%
-
- pause
复制代码
作者: sunkui1993 时间: 2019-7-19 17:46
如果不换成变量,是可以成功的
作者: flashercs 时间: 2019-7-19 19:11
- @ echo off
- echo 正在启用超级管理员权限...
-
- %1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit
- cd /d "%~dp0"
-
- set TargetPath=G:\\SUNKUI\\LoadProjrct\\Content\\SyblicAssets
- set LinkPath=G:\\Assets
-
- mklink /d %TargetPath% %LinkPath%
-
- pause
复制代码
作者: Batcher 时间: 2019-7-19 21:43
回复 2# sunkui1993
等号左右两边不要有空格
作者: sunkui1993 时间: 2019-7-22 10:47
回复 4# Batcher
多谢老哥~
作者: sunkui1993 时间: 2019-7-22 10:47
回复 3# flashercs
多谢多谢
作者: sunkui1993 时间: 2019-7-22 10:58
回复 4# Batcher
还有一个问题,我如果把这两个变量设置成形参,值是由外面传进来的话,为啥会显示我没有管理员权限呢?
而这个bat脚本 在最开始就已经有打开管理员权限的代码了。
作者: sunkui1993 时间: 2019-7-22 11:00
本帖最后由 sunkui1993 于 2019-7-22 11:21 编辑
更改成传参变量后的源码:- @ echo off
-
- %1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit
- cd /d "%~dp0"
-
- echo TargetPath=%1
- echo LinkPath=%2
-
- mklink /d %TargetPath% %LinkPath%
-
- pause
复制代码
回复 7# sunkui1993
作者: Batcher 时间: 2019-7-22 11:10
回复 8# sunkui1993
把 mshta 整行删掉再执行还会提示权限问题吗?
作者: sunkui1993 时间: 2019-7-22 11:24
回复 9# Batcher
会的。提示我没有足够的权限执行此操作。 依照我最开始的代码 直接把这两变量在bat里初始化,是不会提示权限问题的。不知道为何从外面传值,就会有这个问题
作者: flashercs 时间: 2019-7-22 11:39
回复 10# sunkui1993
第二次提权后运行脚本没有传递参数啊~~~~~~
作者: sunkui1993 时间: 2019-7-22 12:07
回复 11# flashercs
老哥,可以说仔细一点吗,感谢~
作者: flashercs 时间: 2019-7-22 12:16
传参时第一个参数为空白,即:test.bat "" "targetpath" "linkpath"- @ echo off
-
- %~1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c """"%~s0"" :: ""%~2"" ""%~3""""","","runas",1)(window.close)&&exit /b
-
- cd /d "%~dp0"
- echo TargetPath=%2
- echo LinkPath=%3
-
- mklink /d %TargetPath% %LinkPath%
-
- pause
- exit /b
复制代码
作者: sunkui1993 时间: 2019-7-22 13:31
回复 13# flashercs
老哥,多谢指点,按照你的方法,确实是打开了管理员权限。
但是命令语法不能识别。
javascript:;
然后我一看变量值,前后有双引号,就把变量赋值时改成 %~2. %~3.把双引号去掉了,但是还是命令语法不能识别。
javascript:;
作者: flashercs 时间: 2019-7-22 14:01
回复 14# sunkui1993
路径分隔符改成\
作者: sunkui1993 时间: 2019-7-22 14:17
回复 15# flashercs
改成\ 了,但是还是语法不正确
javascript:;
作者: flashercs 时间: 2019-7-22 14:20
回复 16# sunkui1993
你的 link 和target弄反了。。。。。不看用法吗?
作者: sunkui1993 时间: 2019-7-22 14:25
回复 17# flashercs
没弄反呀,可能是我名称起的有歧义吧,为后面一个路径创建一个链接,在前面一个路径显示。
刚刚 我已经找到原因啦,设置变量的时候,应该把echo换成set就好了。谢谢你啦 大佬
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |