|
呵呵,我对颜色分辨不是很好。
是批处理,看界面就知道了哟。加CALL的原因是我的快捷方式是从文件调的,不加CALL无法条用文件中的变量,是保存到一个文本文件中的,见下面的文本内容,因为原来一直使用SHORTCUT命令,效果非常好,但是我想转为PECMD,因为PECMD比较简单,不用自己去建立变量了。- "%USERPROFILE%\Application Data\Microsoft\Internet Explorer\Quick Launch\AUTOCAD2004"+"%CD%\ACAD.EXE"+""+"%CD%"
- "%ALLUSERSPROFILE%\%PROGRAM%\AUTOCAD2004"+"%CD%\ACAD.EXE"+""+"%CD%"
复制代码 下面是我的批处理原代码(支持把快捷方式打包和在GTOOLS下建立SHC.LST快捷方式文件两种方式),想兼容PECMD和SHORTCUT两种方式建立快捷方式,目前PECMD条用快捷方式还又问题。
注:由于是批处理中的一段,所以直接执行是不会成功的,代码仅做参考。
[code]
REM 为了兼容PECMD,增加了一些变量QuickLaunch,但保留了原来的变量以便兼容SHORTCUT方式创建
SET QL=%USERPROFILE%\Application Data\Microsoft\Internet Explorer\Quick Launch
SET QuickLaunch=%QL%
SET CSF=HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders
REG EXPORT "%CSF%" "%TEMP%\SCTEMP.TMP"
TYPE "%TEMP%\SCTEMP.TMP"|FIND "=" >"%TEMP%\SCTEMP.TXT"
BS "%TEMP%\SCTEMP.TXT" \\ \
FOR /F "TOKENS=1* DELIMS==" %%I IN ('TYPE "%TEMP%\SCTEMP.TXT"^|FINDSTR /I /C:"Common Desktop"') DO SET DESKTOP=%%~J
FOR /F "TOKENS=1* DELIMS==" %%I IN ('TYPE "%TEMP%\SCTEMP.TXT"^|FINDSTR /I /C:"Common Programs"') DO SET PROGRAM=%%~J\[HYSOFT]\%GREENNAME%
SET PROGRAMS=%PROGRAM%
:SCUT
IF NOT EXIST ".\GTOOLS\SCUT.exe" GOTO:NSC
>"%TEMP%\SCUT.TXT" Echo ;此文件由WINRAR自动生成;不要修改此文件,否则无法在开始菜单中建立快捷方式
>>"%TEMP%\SCUT.TXT" Echo PATH="%PROGRAM%"
>>"%TEMP%\SCUT.TXT" Echo Silent=1
>>"%TEMP%\SCUT.TXT" Echo Overwrite=1
rar c -z"%TEMP%\SCUT.TXT" ".\GTOOLS\SCUT.exe" &&CLS
START /WAIT "" ".\GTOOLS\SCUT.exe"
IF "%SETUPPATH%"=="%CPATH%" GOTO:SCUTQ
ECHO SET OLDPATH=%SETUPPATH%>"%TEMP%\OLDPATH.BAT"&&BS "%TEMP%\OLDPATH.BAT" \\ \ >NUL&CLS
CALL "%TEMP%\OLDPATH.BAT"
DEL /Q/F "%TEMP%\OLDPATH.BAT">NUL
IF NOT EXIST "%PROGRAM%" MD "%PROGRAM%"
FOR /F "DELIMS=" %%I IN ('DIR /B/S "%PROGRAM%\*.LNK"') DO (
SHC /F:"%%I" /A:Q>"%TEMP%\SCUT.TXT"
BS "%TEMP%\SCUT.TXT" "%OLDPATH%" "%CD%" /I>NUL&CLS
BS "%TEMP%\SCUT.TXT" """ "\\"" /I>NUL&CLS
BS "%TEMP%\SCUT.TXT" "[url=]\\\\[/url]" "\\" /I>NUL&CLS
setlocal enabledelayedexpansion
FOR /F "TOKENS=1,* DELIMS==" %%A IN (%TEMP%\SCUT.TXT) DO CALL SET %%A=%%B
IF DEFINED Arguments IF "!Arguments:~-1!"=="\" (SET Arguments=!Arguments!\)
IF DEFINED WorkingDirectory IF "!WorkingDirectory:~-1!"=="\" (SET WorkingDirectory=!WorkingDirectory!\) ELSE (SET WorkingDirectory=!WorkingDirectory!\\)
IF EXIST "!TargetPath!" SHC.EXE /F:"%%I" /A:E /T:"!TargetPath!" /P:"!Arguments!" /W:"!WorkingDirectory!" /I:"!IconLocation!" /D:"HYSOFT">NUL
endlocal
)
:SCUTQ
COPY /Y "%PROGRAM%\*.LNK" "%QL%\"
GOTO:COTHER
:NSC
CLS
REM 修正如果SHC.LST含有变量如%ALLUSERSPROFILE%不再需要先替换成真实路径,使用~dpI已经可以获取变量路径(郁闷呀,日文中居然这行注释都通不过,非得把~dpI注释前的双百分号删除);替换WINPE不支持的APPDADA变量
BS "%TEMP%\SHC.LST" "%%PROGRAM%%" "%PROGRAM%" /I>NUL&CLS
BS "%TEMP%\SHC.LST" "%%PROGRAMS%%" "%PROGRAMS%" /I>NUL&CLS
BS "%TEMP%\SHC.LST" "%%DESKTOP%%" "%DESKTOP%" /I>NUL&CLS
BS "%TEMP%\SHC.LST" "%%QL%%" "%QL%" /I>NUL&CLS
BS "%TEMP%\SHC.LST" "%%QuickLaunch%%" "%QuickLaunch%" /I>NUL&CLS
BS "%TEMP%\SHC.LST" "%%CD%%" "%CD%" /I>NUL&CLS
BS "%TEMP%\SHC.LST" "%%WINDIR%%" "%WINDIR%" /I>NUL&CLS
BS "%TEMP%\SHC.LST" "%%USERPROFILE%%" "%USERPROFILE%" /I>NUL&CLS
BS "%TEMP%\SHC.LST" "%%APPDATA%%" "%USERPROFILE%\Application Data" /I>NUL&CLS
BS "%TEMP%\SHC.LST" "%%ALLUSERSPROFILE%%" "%ALLUSERSPROFILE%" /I>NUL&CLS
BS "%TEMP%\SHC.LST" "%%PROGRAMFILES%%" "%PROGRAMFILES%" /I>NUL&CLS
BS "%TEMP%\SHC.LST" "%%COMMONPROGRAMFILES%%" "%PROGRAMFILES%\Common Files" /I>NUL&CLS
CLS
IF NOT EXIST "%PROGRAM%" MD "%PROGRAM%"
IF EXIST "%TEMP%\SHC.LST" (FOR /F "EOL=; TOKENS=1-5 DELIMS=+" %%I IN (%TEMP%\SHC.LST) DO (
IF NOT EXIST "%%~dpI" MD "%%~dpI"
IF EXIST %%J CALL SHC.EXE /F:%%I /A:C /D:"HYSOFT" /T:%%J /P:%%K /W:%%L /I:%%M
IF "%WINDIR:~-2%"=="PE" CALL PECMD LINK %%~I,%%~J,%%~K,%%~M,HYSOFT,%%~L
))
[code]
[ 本帖最后由 HUNRYBECKY 于 2009-6-16 12:03 编辑 ] |
|