[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[其他] [已解决]求助批处理使用变量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
复制代码

如果不换成变量,是可以成功的

TOP

  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
复制代码
微信:flashercs
QQ:49908356

TOP

回复 2# sunkui1993


    等号左右两边不要有空格
1

评分人数

    • sunkui1993: 一针见血 指出错误原因技术 + 1
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 4# Batcher


    多谢老哥~

TOP

回复 3# flashercs


    多谢多谢

TOP

回复 4# Batcher


    还有一个问题,我如果把这两个变量设置成形参,值是由外面传进来的话,为啥会显示我没有管理员权限呢?

而这个bat脚本 在最开始就已经有打开管理员权限的代码了。

TOP

本帖最后由 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

TOP

回复 8# sunkui1993


    把 mshta 整行删掉再执行还会提示权限问题吗?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 9# Batcher

会的。提示我没有足够的权限执行此操作。 依照我最开始的代码 直接把这两变量在bat里初始化,是不会提示权限问题的。不知道为何从外面传值,就会有这个问题

TOP

回复 10# sunkui1993


    第二次提权后运行脚本没有传递参数啊~~~~~~
微信:flashercs
QQ:49908356

TOP

回复 11# flashercs


    老哥,可以说仔细一点吗,感谢~

TOP

传参时第一个参数为空白,即: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
复制代码
1

评分人数

微信:flashercs
QQ:49908356

TOP

回复 13# flashercs


   老哥,多谢指点,按照你的方法,确实是打开了管理员权限。
  但是命令语法不能识别。
javascript:;

  然后我一看变量值,前后有双引号,就把变量赋值时改成 %~2. %~3.把双引号去掉了,但是还是命令语法不能识别。
javascript:;

TOP

回复 14# sunkui1993


    路径分隔符改成\
微信:flashercs
QQ:49908356

TOP

返回列表