Board logo

标题: [文件操作] [已解决]xp系统下,如何用bat创建文件夹的快捷方式?注意:是文件夹 [打印本页]

作者: ygqiang    时间: 2011-10-5 17:52     标题: [已解决]xp系统下,如何用bat创建文件夹的快捷方式?注意:是文件夹

本帖最后由 ygqiang 于 2011-10-6 20:00 编辑

xp系统下,
我想创建当前登陆用户xxx(已经具备管理员权限)的桌面快捷方式,也就是:C:\Documents and Settings\xxx\桌面,这个目录

然后,将这个目录的快捷方式,放到C:\Documents and Settings\xxx\SendTo 目录下。

如何通过bat批处理或者reg注册表文件实现?


C:\Documents and Settings\xxx\SendTo

我就是想在这个位置,建立一个桌面的快捷方式。
这样,我u盘里的文件,用鼠标点 右键—发送到—桌面,文件就可以直接复制到桌面了。
作者: ygqiang    时间: 2011-10-5 17:54

本帖最后由 ygqiang 于 2011-10-5 20:50 编辑
  1. ; 创建文件的快捷方式
  2. set path=C:\WINDOWS\system32\xxx.exe
  3. rem 要创建快捷方式的文件
  4. set result="%USERPROFILE%\桌面\xxx.url"
  5. rem 要创建快捷方式的地方
  6. echo [InternetShortcut] >> %result%
  7. echo url="%path%" >> %result%
  8. rem url一定要写
  9. echo IconIndex=0 >> %result%
  10. echo IconFile=%path% >> %result%
复制代码
这个bat命令,是创建文件的快捷方式的,但不能用来创建文件夹的快捷方式。
作者: 920168    时间: 2011-10-5 23:10

本帖最后由 920168 于 2011-10-5 23:21 编辑
  1. Sub bat
  2. echo off & cls
  3. echo create_shortcut
  4. start wscript -e:vbs "%~f0"
  5. Exit Sub
  6. End Sub
  7. Set WshShell = WScript.CreateObject("WScript.Shell")
  8. Rem 在SendTo目录创建一个“电影”快捷方式
  9. set oShellLink = WshShell.CreateShortcut("C:\Documents and Settings\aaa\SendTo" & "\电影.lnk")  : '注意修改路径和名称,主要是用户名
  10. oShellLink.TargetPath = "D:\" : '目标
  11. oShellLink.WindowStyle = 3 :'参数1默认窗口激活,参数3最大化激活,参数7最小化
  12. oShellLink.Hotkey = "Ctrl+Alt+r" : '快捷键
  13. oShellLink.IconLocation = "D:\电影, 0" : '图标
  14. oShellLink.Description = "快捷方式" : '备注
  15. oShellLink.WorkingDirectory = "D:\" : '起始位置
  16. oShellLink.Save : '创建保存快捷方式
复制代码
楼上的可以生成,不过看你要放到SendTo 目录就知道想做什么了
*.url肯定是不行的!呵呵
自己修改下,有备注清楚了,不难吧?
作者: ygqiang    时间: 2011-10-6 04:45

本帖最后由 ygqiang 于 2011-10-6 09:33 编辑

多谢楼上。
  1. Sub bat
  2. echo off & cls
  3. echo create_shortcut
  4. start wscript -e:vbs "%~f0"
  5. Exit Sub
  6. End Sub
  7. Set WshShell = WScript.CreateObject("WScript.Shell")
  8. Rem 在SendTo目录创建一个“桌面”快捷方式
  9. set oShellLink = WshShell.CreateShortcut("C:\Documents and Settings\Administrator\SendTo" & "\桌面.lnk")  : '注意修改路径和名称,主要是用户名
  10. oShellLink.TargetPath = "C:\Documents and Settings\Administrator\桌面" : '目标
  11. oShellLink.WindowStyle = 3 :'参数1默认窗口激活,参数3最大化激活,参数7最小化
  12. oShellLink.Hotkey = "Ctrl+Alt+r" : '快捷键
  13. oShellLink.IconLocation = "C:\Documents and Settings\Administrator\桌面, 0" : '图标
  14. oShellLink.Description = "快捷方式" : '备注
  15. oShellLink.WorkingDirectory = "C:\Documents and Settings\Administrator\桌面" : '起始位置
  16. oShellLink.Save : '创建保存快捷方式
复制代码
以上代码运行成功。
现在的问题是:
1、因为需要在不同的机器上运行,xp系统当前登录用户管理员,并不一定是Administrator,有的是AAA,也有的是test,xxadmin等等。
这种情况,如何修改vbs代码呢?
2、有没有bat批处理代码,可以实现这种要求呢?
作者: ygqiang    时间: 2011-10-6 09:39

“可以在bat里面echo一个临时的vbs  批处理本来功能就很弱 之所以说它强大 就是因为它能灵活调动外部的程序命令等”

看来上面第2个要求,可以实现啊。
作者: ygqiang    时间: 2011-10-6 11:21

  1. Sub bat
  2. echo off & cls
  3. echo create_shortcut
  4. start wscript -e:vbs "%~f0"
  5. Exit Sub
  6. End Sub
  7. Set WshShell = WScript.CreateObject("WScript.Shell")
  8. Rem 在SendTo目录创建一个“桌面”快捷方式
  9. strSendTo = WshShell.SpecialFolders("SendTo")
  10. strDesktop = WshShell.SpecialFolders("Desktop")
  11. set oShellLink = WshShell.CreateShortcut(strSendTo+"\\桌面.lnk")  : '注意修改路径和名称,主要是用户名
  12. oShellLink.TargetPath = strDesktop : '目标
  13. oShellLink.WindowStyle = 3 :'参数1默认窗口激活,参数3最大化激活,参数7最小化
  14. oShellLink.Hotkey = "Ctrl+Alt+R" : '快捷键
  15. oShellLink.IconLocation = strSendTo+"\桌面, 0" : '图标
  16. oShellLink.Description = "快捷方式" : '备注
  17. oShellLink.WorkingDirectory = strSendTo+"\桌面" : '起始位置
  18. oShellLink.Save : '创建保存快捷方式
复制代码
这个代码,可以在C:\Documents and Settings\xxx\SendTo建立一个桌面的快捷方式。

但有个问题:快捷方式的图标,不是4楼的那种。

这个,如何修改呢?
作者: ygqiang    时间: 2011-10-6 11:22

还有,如果在bat代码中生成并调用临时vbs代码呢?
作者: zaixinxiangnian    时间: 2011-10-6 15:17

回复 4# ygqiang


    你这是VBS写的吧》?
VBS比BAT强大吗?不知道BAT如何实现
作者: 920168    时间: 2011-10-6 15:35

回复 8# zaixinxiangnian


    如果一定要用bat,需要到微软下载个工具!
作者: zaixinxiangnian    时间: 2011-10-6 16:35

回复 9# 920168


    意思是上面是用VBS写的喽,看起来还是VBS操作的泛围广一些
作者: awk    时间: 2011-10-6 16:37

回复 4# ygqiang


test.vbs
  1. Set objShell = WScript.CreateObject("WScript.Shell")
  2. strSend = objShell.SpecialFolders("SendTo")
  3. strDesk = objShell.SpecialFolders("Desktop")
  4. set objLink = objShell.CreateShortcut(strSend & "\桌面.lnk")
  5. objLink.TargetPath = strDesk
  6. objLink.WindowStyle = 3
  7. objLink.WorkingDirectory = strDesk
  8. objLink.Save
复制代码

作者: awk    时间: 2011-10-6 16:41

回复 7# ygqiang


test.bat
  1. @echo off
  2. more +5 "%~f0" >"%temp%\mysendto.vbs"
  3. start "" "%temp%\mysendto.vbs"
  4. goto :eof
  5. Set objShell = WScript.CreateObject("WScript.Shell")
  6. strSend = objShell.SpecialFolders("SendTo")
  7. strDesk = objShell.SpecialFolders("Desktop")
  8. set objLink = objShell.CreateShortcut(strSend & "\桌面.lnk")
  9. objLink.TargetPath = strDesk
  10. objLink.WindowStyle = 3
  11. objLink.WorkingDirectory = strDesk
  12. objLink.Save
复制代码

作者: ygqiang    时间: 2011-10-6 18:31

回复  ygqiang


test.bat
awk 发表于 2011-10-6 16:41



多谢。

这个bat可以满足要求了啊。

我想将这个bat批处理代码,放到另一个bat代码里面,这个test.bat的内容,不能直接加入到别的bat里面吧?

因为我看到了 more +5 "%~f0" >"%temp%\mysendto.vbs"
作者: awk    时间: 2011-10-6 19:30

回复 13# ygqiang


是的,你可以自己改改。
搞不定的话,我可以继续帮你。
作者: ygqiang    时间: 2011-10-6 20:00

  1. ...其他bat代码
  2. chkntfs /x c: d: e: f: g: h: i:
  3. cls
  4. net user Guest /active:yes
  5. cls
  6. ; 右键添加发送到桌面
  7. (echo Set objShell = WScript.CreateObject^("WScript.Shell"^)
  8. echo strSend = objShell.SpecialFolders^("SendTo"^)
  9. echo strDesk = objShell.SpecialFolders^("Desktop"^)
  10. echo set objLink = objShell.CreateShortcut^(strSend ^& "\桌面.lnk"^)
  11. echo objLink.TargetPath = strDesk
  12. echo objLink.WindowStyle = 3
  13. echo objLink.WorkingDirectory = strDesk
  14. echo objLink.Save
  15. )>"%temp%\mysendto.vbs"
  16. start "" "%temp%\mysendto.vbs"
  17. cls
  18. del /f /s /q %systemdrive%\windows\media\*.wav >nul 2>nul
  19. cls
  20. del /f /s /q %systemdrive%\windows\media\*.mid >nul 2>nul
  21. ...其他bat代码
复制代码
问题解决.
作者: ygqiang    时间: 2011-10-6 20:06

或者这个代码,也可以。
  1. ...其他bat代码
  2. chkntfs /x c: d: e: f: g: h: i:
  3. cls
  4. net user Guest /active:yes
  5. cls
  6. ; 右键添加发送到桌面
  7. for /f "delims=:" %%a in ('findstr /n /b "::code" %0') do (more +%%a %0>"%temp%\mysendto.vbs")
  8. start "" "%temp%\mysendto.vbs"
  9. cls
  10. del /f /s /q %systemdrive%\windows\media\*.wav >nul 2>nul
  11. cls
  12. del /f /s /q %systemdrive%\windows\media\*.mid >nul 2>nul
  13. ...其他bat代码
  14. exit
  15. ::code
  16. Set objShell = WScript.CreateObject("WScript.Shell")
  17. strSend = objShell.SpecialFolders("SendTo")
  18. strDesk = objShell.SpecialFolders("Desktop")
  19. set objLink = objShell.CreateShortcut(strSend & "\桌面.lnk")
  20. objLink.TargetPath = strDesk
  21. objLink.WindowStyle = 3
  22. objLink.WorkingDirectory = strDesk
  23. objLink.Save
复制代码





欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2