批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程
[批处理文件精品]批处理版照片整理器[批处理文件精品]纯批处理备份&还原驱动在线第三方下载
返回列表 发帖

Windows下用批处理批量创建快捷方式

本帖最后由 y169168712 于 2020-9-12 16:16 编辑

希望有人能把这个批处理改进一下做成三层的,或者做成PowerShell版的

要用到的命令行工具NirCmd
NirCmd.exe下载后复制到系统目录
32位系统复制到C:\Windows\System32
64位系统复制到C:\Windows\SysWOW64

NirCmd下载地址
http://www.nirsoft.net/utils/nircmd-x64.zip
http://www.onlinedown.net/soft/970876.htm
NirCmd 中文版帮助文档
http://down.51cto.com/data/1976412



批量创建快捷方式,有分类目录

创建目录环节

首先创建好目录,下载好软件,按照下面的格式放入目录,软件必须是绿色便携(Portable),并且支持中文路径,如果不支持中文路径就得改为英文路径。
注意以下目录路径中不能带有空格,遇到空格必须替换成-或者其他字符,最好删除空格。#号后面的exe文件名不能重复,如果重复了需要更改为其他名称,exe应用名也要一起更改。
1.创建主目录
x:\app

2.创建分类目录
x:\app\下载
x:\app\硬件检测
x:\app\系统工具
x:\app\游戏工具
x:\app\网络游戏
x:\app\单机游戏

3.分类目录放入便携软件,我的思路是使用文件夹作为参数,用#号作为分割符,#号前面是快捷方式的名称,#号后面是exe运行文件的名称。
使用系统自带forfiles命令搜索.exe文件,使用nircmd shortcut命令批量创建快捷方式。


放入便携软件格式如下:
x:\apps\下载\迅雷#ThunderStart
x:\apps\硬件检测\显卡检测gpu-z#GPU-Z
x:\apps\系统工具\Hosts编辑器#HostsEditor
...
...


创建批处理环节

创建后的快捷方式位置默认在桌面app文件夹有需要可以更改。

批处理x:\app\批量创建快捷方式.bat内容为:
  1. @echo off
  2. rem 设置时间变量
  3. set "t=%time%"
  4. rem 删除快捷方式
  5. ::nircmd execmd RD /s /q ~$folder.desktop$\app
  6. set LOGFILE=batch.log
  7. call :LOG > %LOGFILE%
  8. @echo off
  9. rem 记录运行所需的时间
  10. set "t1=%time%"
  11. if "%t1:~,2%" lss "%t:~,2%" set "add=+24"
  12. set /a "times=(%t1:~,2%-%t:~,2%%add%)*360000+(1%t1:~3,2%%%100-1%t:~3,2%%%100)*6000+(1%t1:~6,2%%%100-1%t:~6,2%%%100)*100+(1%t1:~-2%%%100-1%t:~-2%%%100)" ,"ss=times/100%%60","mm=times/6000%%60","hh=times/360000","ms=times%%100"
  13. @echo ▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂
  14. echo 本次批处理运行时间为%hh%小时:%mm%分钟:%ss%.%ms%秒  生成日志文件batch.log
  15. pause
  16. exit /B
  17. :LOG
  18. @echo on
  19. rem 创建快捷方式
  20. for /f %%i in ('dir /b /a:d /o:n') do (
  21. for /f "delims=# tokens=1-2" %%a in ('dir %~dp0%%i /b /a:d /o:n') do (
  22. forfiles /p ".\%%i\%%a#%%b" /M "%%b.exe" /S /C "cmd /c nircmd shortcut @path ~$folder.desktop$\app\%%i %%a")
  23. )
复制代码
批量创建快捷方式,没有分类目录


首先创建好目录,下载好软件,按照下面的格式放入目录,软件必须是绿色便携(Portable),并且支持中文路径,如果不支持中文路径就得改为英文路径。
注意以下目录路径中不能带有空格,遇到空格必须替换成-或者其他字符,最好删除空格。#号后面的exe文件名不能重复,如果重复了需要更改为其他名称,exe应用名也要一起更改。

创建主目录:
x:\游戏

放入游戏格式如下
x:\游戏\魔兽争霸3#War3
x:\游戏\孤单枪手#AlienShooter

创建批处理x:\游戏\批量创建游戏快捷方式.bat内容为:
  1. @echo off
  2. rem 设置时间变量
  3. set "t=%time%"
  4. rem 删除快捷方式
  5. ::nircmd execmd RD /s /q ~$folder.desktop$\app
  6. set LOGFILE=batch.log
  7. call :LOG > %LOGFILE%
  8. @echo off
  9. rem 记录运行所需的时间
  10. set "t1=%time%"
  11. if "%t1:~,2%" lss "%t:~,2%" set "add=+24"
  12. set /a "times=(%t1:~,2%-%t:~,2%%add%)*360000+(1%t1:~3,2%%%100-1%t:~3,2%%%100)*6000+(1%t1:~6,2%%%100-1%t:~6,2%%%100)*100+(1%t1:~-2%%%100-1%t:~-2%%%100)" ,"ss=times/100%%60","mm=times/6000%%60","hh=times/360000","ms=times%%100"
  13. @echo ▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂
  14. echo 本次批处理运行时间为%hh%小时:%mm%分钟:%ss%.%ms%秒  生成日志文件batch.log
  15. pause
  16. exit /B
  17. :LOG
  18. @echo on
  19. rem 创建快捷方式
  20. for /f "delims=# tokens=1-2" %%a in ('dir /b /a:d /o:n') do (
  21. forfiles /p ".\%%a#%%b" /M "%%b.exe" /S /C "cmd /c nircmd shortcut @path ~$folder.desktop$\app\app %%a"
  22. )
复制代码
运行批处理x:\游戏\批量创建游戏快捷方式.bat会在桌面生成“app\app”文件夹以及快捷方式图标。
一个人,征服了自己,也就征服了世界。

回复 1# y169168712


    是否考虑一下代码里面哪些地方限制了它不支持带空格的路径?在合适的地方加上双引号是否可以解决这个问题呢
【批处理在线视频分享】http://bbs.bathome.net/thread-31727-1-1.html
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html

我帮忙写的代码不需要付钱,不用找我要支付宝或微信账号。如果一定要给,请到微信群给大家发红吧。

TOP

本帖最后由 y169168712 于 2020-9-12 16:48 编辑

回复 2# Batcher


    加了两组双引号,#号后面和应用exe可以出现空格,#号前面和分类文件夹暂时没办法解决
一个人,征服了自己,也就征服了世界。

TOP

返回列表