Board logo

标题: [其他] [已解决]求助批处理使用变量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”这个命令
但是我用刚刚初始化的变量来代替了。
为什么这样执行不成功了呢   求大佬指点指点,万分感谢。
以下是源代码
------------------
  1. @ echo off
  2. echo 正在启用超级管理员权限...
  3. %1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit
  4. cd /d "%~dp0"
  5. set TargetPath = G:\\SUNKUI\\LoadProjrct\\Content\\SyblicAssets
  6. set LinkPath = G:\\Assets
  7. mklink /d %TargetPath% %LinkPath%
  8. pause
复制代码

作者: sunkui1993    时间: 2019-7-19 17:46

如果不换成变量,是可以成功的
作者: flashercs    时间: 2019-7-19 19:11

  1. @ echo off
  2. echo 正在启用超级管理员权限...
  3. %1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit
  4. cd /d "%~dp0"
  5. set TargetPath=G:\\SUNKUI\\LoadProjrct\\Content\\SyblicAssets
  6. set LinkPath=G:\\Assets
  7. mklink /d %TargetPath% %LinkPath%
  8. 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 编辑

更改成传参变量后的源码:
  1. @ echo off
  2. %1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit
  3. cd /d "%~dp0"
  4. echo TargetPath=%1
  5. echo LinkPath=%2
  6. mklink /d %TargetPath% %LinkPath%
  7. 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"
  1. @ echo off
  2. %~1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c """"%~s0"" :: ""%~2"" ""%~3""""","","runas",1)(window.close)&&exit /b
  3. cd /d "%~dp0"
  4. echo TargetPath=%2
  5. echo LinkPath=%3
  6. mklink /d %TargetPath% %LinkPath%
  7. pause
  8. 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