已经完工,请大家测试效果多提建议,谢谢
已经有类似的批处理了,但我认为在规划时就建好快捷方式会方便很多,可以改中文快捷名,程序也不用太复杂,值得推广。
工作过程: 将目录下的子目录进行/s查找出所有lnk和url文件
对每个lnk文件分析是否快捷方式在本目录,如果不是则重建(这是为了减少目录被分类时移动到其他地方造成的错误)
每个快捷方式前面有“快捷方式”字样或后面有“.exe”字样均删除
进入相应的目录,检查是否有“注册”“绿化”“安装”字样的文件并执行
发送快捷方式到桌面
@echo off
cls
echo.
echo.
echo *****************************************************************************
echo * *
echo * 批量跑快捷.cmd 9z于2008.3.26
http://693985.qzone.qq.com *
echo * *
echo * 目的: 自动查找出文件夹下所有子文件夹里的快捷方式并建立到到桌面,是绿色软 *
echo * 件爱好者和电脑公司必备工具, 经常整理软件的个人用户使用起来更是方便。 *
echo * *
echo * 使用方法: 把所需要处理的文件夹拖到这个程序上面,或者直接在文件中定义文件 *
echo * 夹,打开文件编辑filetmp变量,默认为当前文件夹 *
echo * *
echo * 要求: 1. 用户事先把每个软件在相应目录下都建立一次快捷方式,如果今后这个目 *
echo * 录被更改了位置,批处理将自动生成新的快捷方式 *
echo * 2. 用户对要注册绿化类的软件建立名字要包含有"注册,绿化,安装,汉化,设 *
echo * 置,破解"字样的批处理、执行文件或注册表文件 *
echo * *
echo *****************************************************************************
set desk=C:\Documents and Settings\All Users\桌面
rem 不想使用查找注册文件功能请把上面这句桌面位置更改为“set desk=nul\"
set filetmp=%cd%
if /i "%cd%" neq "c:\" goto BEGIN
if exist f:\tools\nul set filetmp=f:\tools
if exist e:\tools\nul set filetmp=e:\tools
if exist d:\tools\nul set filetmp=d:\tools
:BEGIN
rem 工作流程:
rem 将目录下的子目录进行/s查找出所有lnk和url文件
rem 对找到的每个文件进入到相应文件夹,如果快捷方式正好指向本文件夹,直接复制到桌面,否则查找其
rem 指向的执行文件,如果本目录里有这个执行文件,则重建快捷方式并发送桌面,没有或指向的是网站则什么都不做。
rem 基本可以使用了,但还有注册功能、空格和一些不规则目录或文件名部分没有完善。
echo.
echo.
echo.
if "%1" gtr "" set filetmp="%1"
call %filetmp:~0,2%
cd %filetmp%
setlocal enabledelayedexpansion
echo 请耐心等待遍历%cd%,根据目录大小硬盘灯亮完开始闪就快了.....
:BEGIN
for /f "delims=" %%i in ('dir *.lnk *.url /s /b') do (
del c:\tmp.log >nul 2>nul
set filetmp=%%~nxi&&set j=
rem 上面一句取得tools下每一文件快捷方式文件路径+文件名,路径=%%~dpi,文件名=%%~nxi
cd "%%~dpi"
find /i /c "%%~dpi" "%%~nxi">nul&&echo ..!filetmp!&© "!filetmp!" "C:\Documents and Settings\All Users\桌面\">nul || (
find /i /c "http://" "!filetmp!">nul||echo ok>c:\tmp.log
)
if exist c:\tmp.log for /f "delims=" %%j in ('find ":" "!filetmp!" ^|findstr /r "^:"') do set j=%%~nxj&&echo !j!>c:\tmp.log
if exist !j! (
set filetmp=!filetmp:~0,-4!.url &&rem 把扩展名换成.url,有些快捷方式被改成中文,所以保持原名
echo :::LNK路径不对,在桌面另生成:!filetmp!
rem 以下几句生成url文件
(echo && echo URL=File:///%%~dpi!j! && echo WorkingDirectory=%%~dpi
echo ShowCommand= && echo IconFile=%%~dpi!j! && echo IconIndex=^0 && echo HotKey=)>"C:\Documents and Settings\All Users\桌面\!filetmp!"
)
if exist "%desk%\!filetmp!" (
set j=!filetmp:.exe=!
set j=!j:快捷方式=!
if "!filetmp!" neq "!j!" if exist "%desk%\!j!" del "%desk%\!j!"
ren "%desk%\!filetmp!" "!j!"
set filetmp=
for /f "delims=" %%j in ('dir *set*.reg *set*.cmd *set*.bat /b 2^>nul') do set filetmp=%%j
for /f "delims=" %%j in ('dir *reg*.reg *reg*.cmd *reg*.exe *reg*.bat /b 2^>nul') do set filetmp=%%j
for /f "delims=" %%j in ('dir *汉化*.reg *汉化*.cmd *汉化*.exe *汉化*.bat /b 2^>nul') do set filetmp=%%j
for /f "delims=" %%j in ('dir *设置*.reg *设置*.cmd *设置*.exe *设置*.bat /b 2^>nul') do set filetmp=%%j
for /f "delims=" %%j in ('dir *注册*.reg *注册*.cmd *注册*.exe *注册*.bat /b 2^>nul') do set filetmp=%%j
for /f "delims=" %%j in ('dir *绿化*.reg *绿化*.cmd *绿化*.exe *绿化*.bat /b 2^>nul') do set filetmp=%%j
for /f "delims=" %%j in ('dir *安装*.reg *安装*.cmd *安装*.exe *安装*.bat /b 2^>nul') do set filetmp=%%j
for /f "delims=" %%j in ('dir *破解*.reg *破解*.cmd *破解*.exe *破解*.bat /b 2^>nul') do set filetmp=%%j
if "!filetmp:un=!" gtr "!filetmp!" (set filetmp=) else (if "!filetmp:卸=!" gtr "!filetmp!" set filetmp=)
if "!filetmp!" gtr "" echo -----找到并注册:!cd!\的"!filetmp!"&&if /i "!filetmp:~-3!"=="reg" (call regedit /s !filetmp!
) else (
echo 正在更名,^!!filetmp!,!filetmp! > nul 1>nul 2>nul
ren "^!!filetmp!" "!filetmp!" > nul 1>nul 2>nul
echo >tmp.bat rem for 去掉文件中的pause
for /f "eol=; tokens=*" %%j in (!filetmp!) do if /i "%%j" neq "pause" echo %%j>>tmp.bat
set filetmp="!cd!"
call tmp.bat
cd !filetmp!&&del tmp.bat&&color 07&&echo off
)
)
)
)
:\
:END
del c:\tmp.log >nul 2>nul
echo.
echo.
echo 任务完成,按任意键退出...........
pause >nul
Last edited by 9zhmke on 2008-3-25 at 12:51 PM ]