找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 79192|回复: 17

[其他] [已解决]求助批处理使用变量mklink不成功

[复制链接]
发表于 2019-7-19 17:43:25 | 显示全部楼层 |阅读模式
本帖最后由 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
复制代码
 楼主| 发表于 2019-7-19 17:46:28 | 显示全部楼层
如果不换成变量,是可以成功的
发表于 2019-7-19 19:11:12 | 显示全部楼层
  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
复制代码
发表于 2019-7-19 21:43:13 | 显示全部楼层
回复 2# sunkui1993


    等号左右两边不要有空格

评分

参与人数 1技术 +1 收起 理由
sunkui1993 + 1 一针见血 指出错误原因

查看全部评分

 楼主| 发表于 2019-7-22 10:47:11 | 显示全部楼层
回复 4# Batcher


    多谢老哥~
 楼主| 发表于 2019-7-22 10:47:32 | 显示全部楼层
回复 3# flashercs


    多谢多谢
 楼主| 发表于 2019-7-22 10:58:48 | 显示全部楼层
回复 4# Batcher


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

而这个bat脚本 在最开始就已经有打开管理员权限的代码了。
 楼主| 发表于 2019-7-22 11:00:29 | 显示全部楼层
本帖最后由 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
发表于 2019-7-22 11:10:23 | 显示全部楼层
回复 8# sunkui1993


    把 mshta 整行删掉再执行还会提示权限问题吗?
 楼主| 发表于 2019-7-22 11:24:38 | 显示全部楼层
回复 9# Batcher

会的。提示我没有足够的权限执行此操作。 依照我最开始的代码 直接把这两变量在bat里初始化,是不会提示权限问题的。不知道为何从外面传值,就会有这个问题
发表于 2019-7-22 11:39:28 | 显示全部楼层
回复 10# sunkui1993


    第二次提权后运行脚本没有传递参数啊~~~~~~
 楼主| 发表于 2019-7-22 12:07:12 | 显示全部楼层
回复 11# flashercs


    老哥,可以说仔细一点吗,感谢~
发表于 2019-7-22 12:16:37 | 显示全部楼层
传参时第一个参数为空白,即: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技术 +1 收起 理由
sunkui1993 + 1 很耐心 感谢

查看全部评分

 楼主| 发表于 2019-7-22 13:31:14 | 显示全部楼层
回复 13# flashercs


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

  然后我一看变量值,前后有双引号,就把变量赋值时改成 %~2. %~3.把双引号去掉了,但是还是命令语法不能识别。
javascript:;
发表于 2019-7-22 14:01:55 | 显示全部楼层
回复 14# sunkui1993


    路径分隔符改成\
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 06:14 , Processed in 0.028268 second(s), 12 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表