容量为256GB的银灿IS903主控金属外壳可量产DVD可启动Windows PE系统安装维护U盘 2025-04-19
rem 搜索并且运行银灿IS903量产U盘CD-ROM中的Index-Your-Files的批处理脚本源码文件
@echo off &color 0a &setlocal enabledelayedexpansion
rem 有些Windows PE系统不支持 'fsutil fsinfo drives' 命令参数,所以这里循环测试枚举遍历所有盘符
rem for /f "tokens=1,* delims= " %%a in ('fsutil fsinfo drives') do (set "code=%%b" && set "code=!code::\=!")
rem for %%a in (!code!) do (
for %%a in (C D E F G H I J K L M N O P Q R S T U V W X Y Z A B) do (
if exist %%a:\02-IndexYourFiles\Read-IYF.txt (
del /q C:\APP\IYF\iyf.ini
erase /q C:\APP\IYF\iyf.ini
del /q C:\APP\IYF\iyf.ini
erase /q C:\APP\IYF\iyf.ini
del /q C:\APP\IYF\iyf.ini
erase /q C:\APP\IYF\iyf.ini
rem 用7z-SFX-Builder-v2.5.0.5制作的IYF配置文件INI自解压释放程序
c:\app\iyf\ini-%%a.exe
exit
)
)
rem 用Delphi7制作的能在5秒钟后定时自动关闭的没有找到CD-ROM的提示窗口
start /wait c:\app\iyf\show-msg.exe
rem 没有找到CD-ROM时自解压空白的IYF配置文件INI并运行Index-Your-Files软件
c:\app\iyf\ini-empty.exe
exit
rem echo.!code!
rem pause.
;!@Install@!UTF-8!
InstallPath="C:\\APP"
OverwriteMode="1+8"
RunProgram="C:\\APP\\IYF\\iyf-bat.bat"
;!@InstallEnd@!
7zSFXBuilder_SFXName=C:\IYF.exe
7zSFXBuilder_SFXIcon=C:\APP\IYF\icon.ico
7zSFXBuilder_UseDefMod=7zsd_LZMA2
7zSFXBuilder_SFXFile_1=C:\APP\IYF\
7zSFXBuilder_7Zip_Level=Ultra
7zSFXBuilder_7Zip_Method=LZMA2
7zSFXBuilder_7Zip_Dictionary=64 MB
7zSFXBuilder_7Zip_BlockSize=Solid
精挑细选,反复测试,不断改善,应用程序软件视频音频文档表格,收集了30GB的文件量产到银灿IS903的DVD-ROM中,有许多脚本和程序都是反复修改测试了成百上千次,用各类防毒杀毒软件多次扫描杀毒,反复改进后再量产。其中有许多应用程序软件是我自己用
“AutoHotkey_1.1.37.02_setup.exe”或者”Embarcadero.Delphi.11.2.v28.0.46141.0937.Lite.v17.2.exe”
编程开发调试测试制作而成,另外还有一些非常有用,非常好,非常优秀的绝版软件,这些软件的功能非常强大好用并且我也非常喜欢使用这些软件,但是这些软件已经绝版了,并且软件的官方网站也打不开了,已经停止版本更新了。例如:IYF for Windows (Index Your files)、Md5Checker 版本 3.3 x86 32位 32-Bit 等等许多绝版应用程序软件。
反复修改源代码,反复调试,反复测试,反复更新,反复升级,持续改善,持续提高,最后再大量量产到银灿IS903主控的U盘DVD-ROM物理硬件虚拟光驱( CD-ROM Emulation )此DVD光盘在量产U盘的闪存芯片(Flash Memory ChipSet)中,此DVD-ROM为物理永久写保护只读存储空间,电脑可以通过设置BIOS从此DVD-ROM启动到(“U盘魔术师USM v5 维护版”),从而可以在Windows PE环境下安装Microsoft Windows 10 企业版 LTSC或者。
05ADDF9019893B593FA9FB057E0111EB *SYSTEM\Windows\ESD\Windows10_P.esd
E176F6E9425F02F4F7BA1E7A7E768ACD *SYSTEM\Windows\ESD\Windows7_P.esd
625BD7683C6986FFCAF87031B850F3B5 *SYSTEM\13-www.FirPE.cn-C-Pan\FirPE-V2.0.3-系统维护和安装环境-WindowsPE.exe
7B25F88568A968E064A824E9154AC83B *Software\网卡驱动包\net_drivers\drivers\DP_WLAN-WiFi_24060.7z
A4A7CE9A64BBE85131723FCF7ED01701 *13-编程开发应用程序软件工程源代码\Embarcadero.Delphi.11.2.v28\Ext.Core.7z
A15A22AE1298ECC833CCCF020A6CADB0 *XYLYUSBTOOLS\XYLYUSBTOOLS_X64.IMG
6B9E8251E3FD3D3C05E8EFBA8FB8384C *BOOT\WIN11PE_X64.WIM
369DCEB77BB0BC483C17AECB1EF6F356 *BOOT\WIN10PE_X64.WIM
68A338F6741F3A917A1E667E3991D678 *Software\PDF-XChange-Editor-Plus-v10.4.4.392-x64-PDF编辑器.exe
2C8C667E87D8D3DA7E31257FADC2938C *XYLYUSBTOOLS\XYLYUSBTOOLS_X86.IMG
A4E4C69A49EC1EB35BBBEF55AAF5C246 *SYSTEM\07-更新驱动程序\bak\360驱动大师网卡版360DrvMgr-MD5-A4E4C.exe
E3910096C98E53397099E07E53883CDB *SYSTEM\07-更新驱动程序\DrvCeonw\Win10x64\Network.7z
E30E83415F58A9E348BA23F0A30FB2B3 *Software\_WPS-Office-MD5-A80A8-教育考试专用版\bak\xb21cn_MS_Office_2016_Pro_Plus_3in1-MD5-E30E83-办公文档表格查看编辑.exe
143E3E3D68BFFCC4D628C8B54676ECFA *BOOT\WIN10PE_X86.WIM
A80A8D368A1F84B85482971445F72DD5 *Software\_WPS-Office-MD5-A80A8-教育考试专用版\WPS-Office-MD5-A80A8-教育考试专用版-办公文档表格查看编辑.exe
2ACE14402A8E3D05F05764066B44D52D *SYSTEM\07-更新驱动程序\bak\驱动精灵网卡版.exe
537CFA1129314441C696C83118E28E65 *04-GoodSync2Go\GoodSync2Go-定时双向同步备份文件夹-MD5-537CF.zip
A9E7041DB0E41B4DEF018DAEB09A91C4 *Software\Icecream_PDF_Converter_Pro_2.86-PDF和图片转换及合并.exe
2AD74064BAD4AB00227732431789CE5A *Software\完美解码PureCodec20250318-电影视频音乐歌曲音频播放器.exe
3860F708F5A1B92F66C1E16A615190BD *10-樊登读书-帆书\01-保持终身学习-不为无知开脱.mp4
FDFC0A87032F72FE874ECCD4822CA156 *Software\Adobe-Photoshop-CS6-修图图片图像处理编辑修改.exe
DFC3F6730AE525CE947254171F740AD7 *Software\网卡驱动包\net_drivers\drivers\DP_LAN_Others_24060.7z
%~D0
cd /d %~dp0
start %~dp019-Md5Checker\Md5Checker.exe %~dp0CHECKSUM.md5
exit
rem 搜索并且运行容量是4TB的SanDisk闪迪移动固态硬盘E81的批处理脚本源码文件
@echo off &color 0a &setlocal enabledelayedexpansion
for /f "tokens=1,* delims= " %%a in ('fsutil fsinfo drives') do (set "code=%%b" && set "code=!code::\=!")
for %%a in (!code!) do (
if exist %%a:\DVD-ISO-Update (
start %%a:\DVD-ISO-Update
exit
)
)
rem echo.!code!
rem pause.
@echo off
rem 搜索并且运行容量是4TB的SanDisk闪迪移动固态硬盘E81中的Maye程序的批处理脚本源码文件
rem set "FileName=Maye.EXE"
echo 正在搜索,请稍候...
for %%a in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
if exist %%a:\DVD-ISO-Update (
start %%a:\DVD-ISO-Update
exit
)
)
rem 一键生成可启动可量产ISO光盘镜像文件
rem UltraISO Premium Edition 版本 9.7.6.3860
rem 命令行语句语法及参数
set /a y=%date:~,4%,mo=1%date:~5,2%%%100,d=1%date:~8,2%%%100,h=%time:~,2%,m=1%time:~3,2%%%100,s=1%time:~6,2%%%100
rem 月前添加0
if %mo%==0 set mo=00
if %mo%==1 set mo=01
if %mo%==2 set mo=02
if %mo%==3 set mo=03
if %mo%==4 set mo=04
if %mo%==5 set mo=05
if %mo%==6 set mo=06
if %mo%==7 set mo=07
if %mo%==8 set mo=08
if %mo%==9 set mo=09
rem 日前添加0
if %d%==0 set d=00
if %d%==1 set d=01
if %d%==2 set d=02
if %d%==3 set d=03
if %d%==4 set d=04
if %d%==5 set d=05
if %d%==6 set d=06
if %d%==7 set d=07
if %d%==8 set d=08
if %d%==9 set d=09
rem 小时前添加0
if %h%==0 set h=00
if %h%==1 set h=01
if %h%==2 set h=02
if %h%==3 set h=03
if %h%==4 set h=04
if %h%==5 set h=05
if %h%==6 set h=06
if %h%==7 set h=07
if %h%==8 set h=08
if %h%==9 set h=09
rem 分前添加0
if %m%==0 set m=00
if %m%==1 set m=01
if %m%==2 set m=02
if %m%==3 set m=03
if %m%==4 set m=04
if %m%==5 set m=05
if %m%==6 set m=06
if %m%==7 set m=07
if %m%==8 set m=08
if %m%==9 set m=09
rem 秒前添加0
if %s%==0 set s=00
if %s%==1 set s=01
if %s%==2 set s=02
if %s%==3 set s=03
if %s%==4 set s=04
if %s%==5 set s=05
if %s%==6 set s=06
if %s%==7 set s=07
if %s%==8 set s=08
if %s%==9 set s=09
rem echo 当前时间为:%y%年%mo%月%d%日%h%时%m%分%s%秒
md D:\MP-USB-DVD
md D:\MP-USB-DVD\DVD
md D:\MP-USB-DVD\ISO
%~dp0..\UltraISO.exe -volume "USB-DVD-AIO-ROM" -sysid "USB-DVD-AIO-ROM" -appid "USB-DVD-AIO-ROM" -volset "USB-DVD-AIO-ROM" -preparer "USB-DVD-AIO-ROM" -publisher "USB-DVD-AIO-ROM" -imax -lowercase -udfdvd -bootfile %~dp0..\DVD-AIO-bif.bif -optimize -directory %~dp0..\.. -out D:\MP-USB-DVD\ISO\USB-DVD-AIO-ROM-ISO-%y%-%mo%-%d%_%h%.%m%.%s%.iso
start D:\MP-USB-DVD\ISO
exit
rem %~dp021_OSCDIMG\OSCDIMG.exe -u2 -b%~dp021_OSCDIMG\DVD-AIO-bif.bif -w1 -c -h -l亮仔的IQI_X盘-1980-01-15- -m -t1/15/1980,11:11:11 -y6 %~dp0 D:\MP-USB-DVD\ISO\USB-DVD-AIO-ROM-ISO-%y%-%mo%-%d%_%h%.%m%.%s%.iso
exit
示例
1.创建一个新的ISO映像,向其中添加一个文件(autoexec.bat)以及“c:\program files\ultraiso”中的所有文件和文件夹。使用ISO 9660—MAX名称长度(最大207),并在文件名中允许使用小写字符。
ultraiso -imax -I-f c: lautoexec. bat-d "c: \program fileslultraiso"-volu TEST CD -out c:Itest.iso
注意:可以将较短的名称“I”用于“小写”,将“out”用于“输出”,只要它与其他参数不冲突即可。此外,所有带有SPACE字符的字符串或文件名都应用“”引起来。
2.打开一个旧的ISO映像,并向其中添加一个文件和一个文件夹。
ultraiso -in c: \test.iso -f c: \config.sys -f"c: \program fileslultraiso"
3.打开一个存在的ISO映像,更改目录并在其中添加一个文件;然后删除一个文件。
ultraiso -in c: \test.iso -c"/program files/ultraiso"-f"c: lautoexec. bat"-rm /autoexec.bat 注意:“/”用作ISO映像中的路径分隔符。
错误码
返回码:0表示成功,-1表示错误
UltraISO命令行参数:
-volume string 卷标
-sysid string 系统ID
-appid string 应用程序ID
-volset string 卷集ID
-preparer string 准备者
-publisher string 出版者
-ilong ISO的长文件名,最多31个字符
-imax ISO的文件名最大长度,最多207个字符
-vernum 包含文件版本号
-lowercase 允许小写字母
-joliet 创建Joliet卷
-jlong Joliet卷的长文件名,最多103个字符
-rockridge 创建RockRidge卷
-udf 创建UDF卷
-hfs 创建Apple HFS卷
-udfdvd 创建UDF DVD映像,此选项将覆盖所有其他卷设置
-bootfile 文件名 设置引导文件
-bootinfotable 在引导文件中生成引导信息表
-optimize 通过只编码相同文件一次来优化文件系统
-file 文件名 添加一个文件或文件夹(包括文件夹名称和其下的所有文件和文件夹)
-directory 目录名 添加给定目录下的所有文件和文件夹(不包括目录名称本身)
-newdir 目录名 创建新目录
-chdir 目录名 在ISO映像中更改当前目录
-rmdir 文件名 从ISO映像中删除文件或文件夹(应指定完整路径)
-pn 文件名 n=1-9,设置文件或文件夹的优先级(应指定完整路径)
-hide 文件名 设置文件或文件夹的隐藏属性(应指定完整路径)
-ahide 文件名 设置文件或文件夹的高级隐藏属性(应指定完整路径)
-input 文件名 输入ISO映像
-output 文件名 输出ISO映像
-bin2iso 文件名 将输入CD/DVD映像转换为ISO格式
-dmg2iso 文件名 将输入DMG映像转换为ISO格式
-bin2isz 文件名 将输入CD/DVD映像压缩为ISZ格式
-compress n 设置压缩级别,n=1-6
-encrypt x 设置加密方法,x=1-3
-password pass_word_string 设置密码
-split split_size 以字节为单位设置分段大小
-list 文件名 创建ISO映像中的文件和文件夹列表
-get 文件名 设置要提取的文件或文件夹(应指定完整路径)
-extract 目录名 将ISO映像提取到指定目录
-copy drive: 从CD/DVD驱动器创建ISO映像(使用-output定义文件名)
-checksum 在保存ISO映像之前创建文件校验和
-md5 在保存后生成ISO映像的MD5哈希码
-crc32 在保存后生成ISO映像的CRC-32校验和
-crc16 在保存后生成ISO映像的CRC-16/CRC-CCITT校验和
--checksum 文件名 创建ISO映像的文件校验和
--md5 文件名 生成ISO映像的MD5哈希码
--crc32 文件名 生成ISO映像的CRC-32校验和
--crc16 文件名 生成ISO映像的CRC-16/CRC-CCITT校验和
-veryfy 文件名.iso.md5 验证ISO映像的文件校验和
-veryfymd5 文件名.md5 验证ISO映像的MD5校验和
-cmd 文件名 从文本文件中读取所有命令行选项
-silent 不显示任何弹出窗口
返回代码: 0表示成功,-1表示错误
rem OSCDIMG 2.56 CD-ROM and DVD-ROM Premastering Utility
Rem Oscdimg 命令行选项
rem OSCDIMG 2.56 CD-ROM and DVD-ROM Premastering Utility
rem 一键生成可启动可量产ISO光盘镜像文件
set /a y=%date:~,4%,mo=1%date:~5,2%%%100,d=1%date:~8,2%%%100,h=%time:~,2%,m=1%time:~3,2%%%100,s=1%time:~6,2%%%100
rem 月前添加0
if %mo%==0 set mo=00
if %mo%==1 set mo=01
if %mo%==2 set mo=02
if %mo%==3 set mo=03
if %mo%==4 set mo=04
if %mo%==5 set mo=05
if %mo%==6 set mo=06
if %mo%==7 set mo=07
if %mo%==8 set mo=08
if %mo%==9 set mo=09
rem 日前添加0
if %d%==0 set d=00
if %d%==1 set d=01
if %d%==2 set d=02
if %d%==3 set d=03
if %d%==4 set d=04
if %d%==5 set d=05
if %d%==6 set d=06
if %d%==7 set d=07
if %d%==8 set d=08
if %d%==9 set d=09
rem 小时前添加0
if %h%==0 set h=00
if %h%==1 set h=01
if %h%==2 set h=02
if %h%==3 set h=03
if %h%==4 set h=04
if %h%==5 set h=05
if %h%==6 set h=06
if %h%==7 set h=07
if %h%==8 set h=08
if %h%==9 set h=09
rem 分前添加0
if %m%==0 set m=00
if %m%==1 set m=01
if %m%==2 set m=02
if %m%==3 set m=03
if %m%==4 set m=04
if %m%==5 set m=05
if %m%==6 set m=06
if %m%==7 set m=07
if %m%==8 set m=08
if %m%==9 set m=09
rem 秒前添加0
if %s%==0 set s=00
if %s%==1 set s=01
if %s%==2 set s=02
if %s%==3 set s=03
if %s%==4 set s=04
if %s%==5 set s=05
if %s%==6 set s=06
if %s%==7 set s=07
if %s%==8 set s=08
if %s%==9 set s=09
rem echo 当前时间为:%y%年%mo%月%d%日%h%时%m%分%s%秒
md D:\01-量产U盘
%~dp0Oscdimg -u1 -b %~dp0.._bif.bif -w1 -c -h -l晓亮的U盘_HyperBackup_1980.01.15 -m -t1/15/1980,11:11:11 -y6 %~dp0..\ D:\01-量产U盘\DVD-ISO-rq1-%y%.%mo%.%d%_%h%-%m%-%s%.iso
exit
rem %~dp0Oscdimg -u1 -b %~dp0.._bif.bif -os -w1 -c -h -l晓亮的U盘_GoodSync_rq1_1980-1-15 -m -t1/15/1980,11:11:11 -y6 %~dp0..\ %~dp0..\..\%y%.%mo%.%d%_%h%-%m%-%s%-rq1-IS903-CD-ISO.iso
Rem Oscdimg 命令行选项
Rem https://learn.microsoft.com/zh-cn/windows-hardware/manufacture/desktop/oscdimg-command-line-options?view=windows-11
Rem oscdimg 语法
Rem Windows 命令提示符复制
Rem Oscdimg [<options>] <sourceLocation> <destinationFile>
?项目
?2022/12/01
?5 个参与者
反馈
Oscdimg 是一个命令行工具,可用于创建自定义 32 位或 64 位版 Windows 预安装环境 (Windows PE) 的映像 (.iso) 文件。 然后,可将该 .iso 文件刻录到 CD 或 DVD。 Oscdimg 支持 ISO 9660、Joliet 和通用磁盘格式 (UDF) 文件系统。
oscdimg 语法
Windows 命令提示符复制
Oscdimg [<options>] <sourceLocation> <destinationFile>
文件系统选项
Oscdimg 工具和 Microsoft Windows 映像母版 API (IMAPI) 支持三种文件系统格式:ISO 9660、Joliet 和 UDF。
ISO 9660 选项
ISO 9660 选项不能与 Joliet 或 UDF 选项结合使用。 在 ISO 9660 文件系统中,文件名的长度加上文件扩展名的长度不能超过 30 个字符。
-d?和?-nt?选项不能一起使用。
选项 说明
-d 允许小写文件名。 不强制要求将小写文件名转换为大写。
-n 允许文件名长于 DOS 8.3 文件名。
-nt 允许与 Windows NT 3.51 兼容的长文件名。
Joliet 选项
Joliet 是 ISO 9660 文件系统的扩展。 Joliet 允许更长的文件名、Unicode 字符和 8 级以上的目录深度。 Joliet 选项不能与 ISO 9660 选项结合使用。
-j2?Joliet 选项不能与任何 UDF 选项结合使用。
选项 说明
-j1 允许这两种文件系统查看磁盘上的所有数据。 使用此选项不会复制映像中的所有文件。 此选项对 Joliet Unicode 文件名进行编码,并在 ISO 9660 命名空间中生成与 DOS 8.3 兼容的文件名。 这些文件名可由 Joliet 系统或传统的 ISO 9660 系统读取。 但是,Oscdimg 可能会更改 ISO 9660 命名空间中的某些文件名,以遵守 DOS 8.3 和 ISO 9660 命名限制。
-j2 对不使用标准 ISO 9660 名称的 Joliet Unicode 文件名进行编码。 此选项用于生成仅包含 Joliet 文件系统的映像。? 无法读取 Joliet 的任何系统只会看到一个默认文本文件,该文件会提醒用户此映像仅在支持 Joliet 的计算机上可用。
-js 替代用户在指定 -j2 选项时使用的默认文本文件。 例如:
复制
-jsC:\readme.txt
UDF 选项
UDF 选项不能与 ISO 9660 选项结合使用。?-ue、-uf?和?-us?选项仅在与?-u2?选项一起使用时才适用。
选项 说明
-u1 生成同时包含 UDF 文件系统和 ISO 9660 文件系统的映像。 ISO 9660 文件系统是使用与 DOS 8.3 兼容的文件名编写的。 UDF 文件系统是使用 Unicode 文件名编写的。
-u2 生成仅包含 UDF 文件系统的映像。 无法读取 UDF 的任何系统只会看到一个默认文本文件,该文件会提醒用户此映像仅在支持 UDF 的计算机上可用。
-udfver102 指定 UDF 文件系统版本 1.02。
-ue 创建嵌入式文件。
-uf 嵌入 UDF 文件标识符条目。
-ur 替代与 -u2 选项一起使用的默认文本文件。 例如:
复制
-urC:\Readme.txt
-us 创建稀疏文件(如果可用)以提高磁盘空间使用效率。
-yl 指定长分配描述符而不是短分配描述符。
CD 或 DVD 启动选项
启动选项可用于创建可启动的 CD 或 DVD 映像。 以下启动选项可用于生成单启动项。 有关详细信息,请参阅使用单启动项创建可启动映像。
选项 说明
-b<bootSectorFile> 指定将写入到磁盘的一个或多个启动扇区中的 El Torito 启动扇区文件。 请不要使用空格。 例如:
在 UEFI 上:-bC:\winpe_x86\Efisys.bin
在 BIOS 上:-bC:\winpe_x86\Etfsboot.com
-e 禁用 El Torito 目录中的软盘仿真。
-p 指定用于 El Torito 目录中平台 ID 的值。 默认 ID 为 0xEF,表示统一可扩展固件接口 (UEFI) 系统。 0x00 表示 BIOS 系统。
<sourceLocation> 必需。 指定您要创建到 .iso 映像中的文件的位置。
<targetFile> 指定 .iso 映像文件的名称。
?重要
不能在同一条命令中结合使用单启动项和多启动项。
多启动项
以下启动选项可用于生成多启动项。 有关详细信息,请参阅使用多启动项创建映像文件。
选项 说明
b<bootSectorFile> 指定将写入到磁盘的一个或多个启动扇区中的 El Torito 启动扇区文件。 请不要使用空格。 例如:
在 UEFI 上:bEfisys.bin
在 BIOS 上:bEtfsboot.com
-bootdata:<number> 指定多启动映像,后接启动项数。 请不要使用空格。 例如:
复制
-bootdata:<3>#<defaultBootEntry>#<bootEntry1>#<bootEntryN>
其中?<3>?是后面的启动项数。
e 禁用 El Torito 目录中的软盘仿真。
p 指定用于 El Torito 目录中平台 ID 的值。 默认 ID 为 0xEF,表示 UEFI 系统。 0x00 表示 BIOS 系统。
t 指定 El Torito 负载段。 如果未指定,此选项默认为 0x7C0。
<sourceLocation> 必需。 指定您要创建到 .iso 映像中的文件的位置。
<targetFile> 指定 .iso 映像文件的名称。
优化选项
优化选项可用于通过仅对重复文件编码一次来优化存储。
选项 说明
-o 使用 MD5 哈希算法来比较文件。
-oc 使用每个文件的二进制比较,速度比 -o 选项更慢。
-oi 比较文件时忽略 Diamond 压缩时间戳。
顺序选项
顺序选项指定磁盘上的文件顺序。 文件排序命令不一定会列出所有文件。 未出现在此文件中的所有文件将按普通方式(即,不存在排序文件时的方式)排序。 有关详细信息,请参阅指定启动顺序。
-yo?选项优先于?-y5?选项。
选项 说明
-y5 指定磁盘上的文件布局。 此选项首先按相反的排序顺序写入 i386 目录中的所有文件。
-yo<bootOrder.txt> 指定一个文本文件,其中指定了要放入映像的文件的布局。 请不要使用空格。 例如:
复制
-yoC:\temp\bootOrder.txt
DVD 视频和音频选项
DVD 视频和音频磁盘创建选项不能与 ISO 9660、Joliet 或 UDF 选项结合使用。
选项 说明
-ut 在创建 DVD 视频和音频磁盘期间截断映像的 ISO 9660 部分。 使用此选项时,在 ISO 9660 文件系统中只能看到 VIDEO_TS、AUDIO_TS 和 JACKET_P 目录。
-uv 在创建 DVD 视频和音频磁盘期间指定 UDF 视频区域兼容性。 在创建期间,UDF 1.02 和 ISO 9660 将写入磁盘。 首先写入 VIDEO_TS、AUDIO_TS 和 JACKET_P 目录中的所有文件。 这些目录优先于用于此映像的所有其他排序规则。
消息传送选项
消息选项自定义文件和目录信息的显示方式。
选项 说明
-a 显示文件和目录的分配摘要。
-os 当系统创建映像时显示重复文件。
-w1 报告所有不符合 ISO 或 Joliet 规范的文件名或目录。
-w2 报告所有不符合 DOS 规范的文件名。
-w3 报告所有零长度文件。
-w4 报告复制到映像的每个文件名。
-yd 消除针对初始 64,000 字节相同的不同文件的警告。
常规映像创建选项
可将常规映像创建选项与单启动项选项或多启动项选项一起使用,以创建可启动的 CD 或 DVD 映像。 有关详细信息,请参阅启动选项和示例。
-m?和?-maxsize?选项不能一起使用。
选项 说明
-c 指定系统必须使用 ANSI 文件名而不是 OEM 文件名。
-g 将所有文件的时间值编码为协调世界时 (UCT) 而不是本地时间。
-h 在映像的源路径中包含隐藏的文件和目录。
-k 即使某些源文件无法打开,也创建映像。
-l<volumeLabel> 指定卷标。 请不要使用空格。 例如:
复制
-l<volumeLabel>
-m 忽略映像的最大大小限制。
-maxsize:<limit> 替代映像的默认最大大小。 默认值为 74 分钟的 CD。 但是,如果使用 UDF,则默认没有最大大小。 请不要使用空格。 例如:
复制
-maxsize:<4096>
其中?<4096>?将映像限制为 4096 MB。
-q 仅扫描源文件。 此选项不会创建映像。
-r Windows 8 的新增功能。 将符号链接解析为其目标位置。
-t<mm/dd/yyyyy,hh:mm:ss> 指定所有文件和目录的时间戳。 请不要使用空格。 可以在项之间使用任意分隔符。 例如:
复制
-t12/31/2000,15:01:00
-y6 指定目录记录必须在扇区末尾精确对齐。
-yw 打开具有写入共享的源文件。
示例
这些示例演示了如何执行以下操作:
?使用单启动项为基于 UEFI 的计算机创建可启动的 CD 或 DVD。
?使用多启动项为基于 UEFI 或 BIOS 的计算机创建可启动的 CD 或 DVD。
?指定磁盘上的启动文件顺序。
使用单启动项创建可启动映像
可以使用 Oscdimg 工具通过单启动项创建可启动的 CD 或 DVD。
若要使用单启动项,请执行以下操作:
?
为基于 UEFI 的计算机创建映像文件。 例如:
?
Windows 命令提示符复制
?
Oscdimg -bC:\winpe_amd64\Efisys.bin -pEF -u1 -udfver102 C:\winpe_amd64\media C:\winpe_amd64\winpeamd64.iso
?
其中?C:\winpe_amd64\media is the location of the source files, and?C:\winpe_amd64\winpeamd64.iso` 是 .iso 文件的路径。
?
使用多启动项创建可启动映像
可以使用 Oscdimg 工具通过多重启动项创建可启动的 CD 或 DVD。 执行此操作时,请注意以下事项:
?命令中的 bootdata 选项必须后接启动项数 (-bootdata:<number>)。
?必须用井号 (#) 分隔每个多启动项。
?必须用逗号 (,) 分隔启动项的每个选项。
?每个启动项必须指定平台 ID。
若要使用多启动项,请执行以下操作:
?
使用多启动命令为基于 UEFI 或 BIOS 的计算机创建映像文件。 例如:
?
Windows 命令提示符复制
?
Oscdimg -bootdata:2#p0,e,bEtfsboot.com#pEF,e,bEfisys.bin -u1 -udfver102 C:\winpe_amd64\media C:\winpe_amd64\winpeamd64.iso
?
此命令启动 BIOS 映像的 Etfsboot.com 启动文件,然后启动 UEFI 映像的 Efisys.bin 启动文件。
?
指定启动顺序
对于大于 4.5 GB 的映像,必须创建启动顺序文件,以确保启动文件位于映像的开头。
文件排序规则如下:
?顺序文件必须采用 ANSI 格式。
?顺序文件必须以换行符结尾。
?顺序文件的每行必须指定一个文件。
?指定的每个文件的路径必须相对于映像的根目录。
?必须以长文件名格式指定每个文件。 不允许使用短名称。
?每个文件路径不能超过 MAX_PATH。 这包括卷名。
例如,对于 D:\cdimage 中的文件,需按如下所示指定路径(其中 D 是 DVD 驱动器的驱动器号):
?D:\cdimage\1\1.txt
?D:\cdimage\2\2.txt
?D:\cdimage\3\3.txt
?D:\cdimage\3\3_5.txt
?D:\cdimage\<longFileName>.txt
创建启动顺序文件
?
创建启动顺序文件。 例如:
?
Windows 命令提示符复制
?
Oscdimg -m -n -yoC:\temp\bootOrder.txt -bC:\winpe_amd64\Efisys.bin C:\winpe_amd64\winpeamd64.iso
?
其中 BootOrder.txt 包含以下文件列表:
?
复制
?
boot\bcd
boot\boot.sdi
boot\bootfix.bin
boot\bootsect.exe
boot\etfsboot.com
boot\memtest.efi
boot\memtest.exe
boot\en-us\bootsect.exe.mui
boot\fonts\chs_boot.ttf
boot\fonts\cht_boot.ttf
boot\fonts\jpn_boot.ttf
boot\fonts\kor_boot.ttf
boot\fonts\wgl4_boot.ttf
sources\boot.wim
?
相关主题
WinPE:创建 USB 可启动驱动器
Windows 部署命令行工具参考
建议的内容
?
?
使用 WIM 文件捕获和应用 Windows
?
?
使用单个 WIM 文件捕获和应用 Windows
?
?
?
DISM 映像管理命令行选项
?
?
DISM 映像管理命令行选项
?
?
?
向脱机 Windows 映像添加和删除驱动程序包
?
?
向脱机 Windows 映像添加和删除驱动程序包
?
?
?
基于 UEFI/GPT 的硬盘驱动器分区
?
?
基于 UEFI/GPT 的硬盘驱动器分区
?
?
?
应答文件 (unattend.xml)
?
?
应答文件 (unattend.xml
?
?
?
使用 DISM 修改 Windows 映像
?
?
使用 DISM 修改 Windows 映像
?
?
?
DISM 命令行选项
?
?
DISM 命令行选项
?
?
?
Wpeutil 命令行选项
?
?
Wpeutil 命令行选项
REM /*
REM =======================================================
REM Silent_Setup.bat - 自动静默安装AutoHotkey和SciTE4AutoHotkey的批处理脚本
REM
REM 文件 : D:\APP\AutoHotkey\Silent_Setup.bat
REM
REM 脚本作者 : ds920
REM 最新版本 : 1.0.1
REM 更新时间 : 2022年1月26日
REM
REM 项目主页 : https://gitee.com/ds920
REM
REM 用法: (需要Windows系统的电脑)
REM 1. 鼠标双击用WinRAR x86 32位 压缩软件 打包成的SFX自解压exe可自行自动静默安装包文件
REM
REM 我的腾讯QQ电子邮箱地址是 595076941@qq.com
REM
REM =======================================================
REM */
START "" "%~dp0"AutoHotkey_1.1.37.02_setup.exe /S /A32 /U32 /U64 /D=D:\APP\AutoHotkey\ /WAIT
REM 等待3秒钟,以便让AHK文件关联生效,使ahk脚本能够顺利运行
ping -n 3 127.0.0.1>nul 2>nul
REM 设置AHK文件关联、汉化AHK文件右键菜单(运行脚本、编译脚本、编译脚本(GUI)、编辑脚本)
REM 脚本说明: 此工具用来修改 AutoHotkey 脚本的右键菜单关联,适用于 AutoHotkey 安装版、绿色版。
REM 作者: 甲壳虫<jdchenjian@gmail.com>
REM 修改作者: 兔子
REM 修改作者: ds920
REM 先解压缩文件,防止Link关联文件和添加鼠标右键中文菜单项时找不到文件
START "" "%~dp0"Compiler.exe
REM 等待1秒钟
ping -n 1 127.0.0.1>nul 2>nul
START "" "%~dp0"SciTE\_Linked.exe
REM 等待1秒钟,以便让AHK文件关联生效,使ahk脚本能够顺利运行
START "" "%~dp0"SciTE\_Linked.exe
REM 等待1秒钟,以便让AHK文件关联生效,使ahk脚本能够顺利运行
START "" "%~dp0"SciTE\_Linked.exe
REM 等待1秒钟,以便让AHK文件关联生效,使ahk脚本能够顺利运行
START "" "%~dp0"SciTE\_Linked.exe
REM 等待1秒钟,以便让AHK文件关联生效,使ahk脚本能够顺利运行
START "" "%~dp0"SciTE\_Linked.exe
REM 等待1秒钟,以便让AHK文件关联生效,使ahk脚本能够顺利运行
START "" "%~dp0"SciTE\_Linked.exe
REM 等待1秒钟,以便让AHK文件关联生效,使ahk脚本能够顺利运行
REM 先解压缩文件,防止Link关联文件和添加鼠标右键中文菜单项时找不到文件
START "" "%~dp0"Compiler.exe
REM 等待1秒钟
ping -n 1 127.0.0.1>nul 2>nul
exit
/*
作者: 甲壳虫<jdchenjian@gmail.com>
博客: http://hi.baidu.com/jdchenjian
脚本说明: 此工具用来修改 AutoHotkey 脚本的右键菜单关联,适用于 AutoHotkey 安装版、绿色版。
脚本版本: 2009-01-21
修改作者: 兔子
更新说明:
2010.01.09 之前某个时间,修改AHK路径、编辑器路径、编译器路径,默认全部在当前目录下寻找
2010.01.09 去掉默认在新建菜单的勾
2010.06.21 如果SCITE为默认编辑器,则复制个人配置文件“SciTEUser.properties”到%USERPROFILE%
2010.06.25 修正因#NoEnv使%USERPROFILE%变量直接引用无效
2016.04.18 删除“2010.06.21”的改动
2021.10.17 新增“编译脚本 (GUI)”的汉化
2021.11.02 自动根据 AutoHotkey.exe 的位置定位基准目录。
2021.11.05 重构代码,精简界面,修复新建模板时的编码问题,修复编辑模板时的权限问题。
修改作者 : ds920
; ===== ds920 修改 2022年1月11日 ===== 第31行 =====
; ===== ds920 修改 2022年1月11日 ===== 第124行 =====
; ===== ds920 修改 2022年1月11日 ===== 第189到191行 =====
; ===== ds920 修改 2022年1月11日 ===== 第242行 =====
更新说明:
2022.01.11 注释掉部分AutoHotkey语句,让其他脚本能够静默调用此AHK脚本,
实现AHK文件关联和汉化鼠标右键中文菜单
2022.01.11 #SingleInstance, force 改成 #SingleInstance, Ignore 防止出现等待的提示窗口
*/
#NoEnv
; ===== ds920 修改 2022年1月11日 ===== 第31行 =====
#SingleInstance, Ignore
SendMode Input
SetWorkingDir %A_ScriptDir%
; 版本(仅用于显示)
Script_Version=ver. 1.1
; AutoHotkey 原版的相关信息写在注册表HKCR主键中,
; 尝试当前用户否有权操作该键,如果无权操作HKCR键(受限用户),
; 可通过操作注册表HKCU键来实现仅当前用户关联AHK脚本。
RegWrite, REG_SZ, HKCR, .test
if ErrorLevel
IsLimitedUser:=1
RegDelete, HKCR, .test
if ErrorLevel
IsLimitedUser:=1
if IsLimitedUser
{
RootKey=HKCU ; 受限用户操作HKCU键
Subkey=Software\Classes\ ; 为简化后面的脚本,此子键须以“\”结尾
}
else
{
RootKey=HKCR ; 非受限用户操作HKCR键
Subkey=
}
; 检查是否存在AHK注册表项
RegRead, FileType, %RootKey%, %Subkey%.ahk
if (FileType!="")
{
RegRead, value, %RootKey%, %Subkey%%FileType%\Shell\Open\Command ; AHK路径
AHK_Path:=PathGetPath(value)
RegRead, value, %RootKey%, %Subkey%%FileType%\Shell\Compile\Command ; 编译器路径
Compiler_Path:=PathGetPath(value)
RegRead, value, %RootKey%, %Subkey%%FileType%\Shell\Edit\Command ; 编辑器路径
Editor_Path:=PathGetPath(value)
RegRead, Template_Name, %RootKey%, %Subkey%.ahk\ShellNew, FileName ; 模板文件名
}
else
FileType=AutoHotkeyScript
; 通过 AutoHotkey.exe 的位置来定位基准目录
SplitPath, A_AhkPath, , AhkDir
if AHK_Path=
{
IfExist, %AhkDir%\AutoHotkey.exe
AHK_path=%AhkDir%\AutoHotkey.exe
}
if Compiler_Path=
{
IfExist, %AhkDir%\Compiler\Ahk2Exe.exe
Compiler_Path=%AhkDir%\Compiler\Ahk2Exe.exe
}
if Editor_Path=
{
IfExist, %AhkDir%\SciTE\SciTE.exe
Editor_Path=%AhkDir%\SciTE\SciTE.exe
}
if Template_Name=
Template_Name=Template.ahk
Gui, Font, bold s15
Gui, Add, Text, x10 y10 w480 h290, %A_Space%设置并汉化 .ahk 文件的右键菜单
Gui, Font
Gui, Add, GroupBox, x20 y50 w460 h50 , “运行脚本”
Gui, Add, Edit, x35 y70 w340 h20 vAHK_Path, %AHK_path%
Gui, Add, Button, x385 y70 w40 h20 gFind_AHK, 浏览
Gui, Add, GroupBox, x20 y110 w460 h50 , “编译脚本”
Gui, Add, Edit, x35 y130 w340 h20 vCompiler_Path, %Compiler_Path%
Gui, Add, Button, x385 y130 w40 h20 gChoose_Compiler, 浏览
Gui, Add, Button, x430 y130 w40 h20 gDefault_Compiler, 默认
Gui, Add, GroupBox, x20 y170 w460 h50 , “编辑脚本”
Gui, Add, Edit, x35 y190 w340 h20 vEditor_Path, %Editor_Path%
Gui, Add, Button, x385 y190 w40 h20 gChoose_Editor, 浏览
Gui, Add, Button, x430 y190 w40 h20 gDefault_Editor, 默认
Gui, Add, GroupBox, x20 y230 w460 h50 , “新建脚本”
Gui, Add, Button, x35 y250 w340 h20 gEdit_Template, 自定义新建脚本的模板
Gui, Font, bold s15
Gui, Add, Button, x20 y300 w200 h40 default gInstall, 设置
Gui, Add, Button, x280 y300 w200 h40 gCancel, 取消
; ===== ds920 修改 2022年1月11日 ===== 第124行 =====
gosub, Install
if (A_Args.1="/set")
gosub, Install
else
Gui, Show, x250 y200 h350 w500 Center, AHK 脚本关联工具 %Script_Version%
return
GuiClose:
GuiEscape:
Cancel:
ExitApp
return
; 查找 AutoHotkey 主程序
Find_AHK:
Gui +OwnDialogs
FileSelectFile, AHK_Path, 3, , 查找 AutoHotkey.exe, AutoHotkey.exe
if (AHK_Path!="")
GuiControl,,AHK_Path, %AHK_Path%
gosub Default_Compiler
return
; 选择脚本编译器
Choose_Compiler:
Gui +OwnDialogs
FileSelectFile, Compiler_Path, 3, , 选择脚本编译器, 程序(*.exe)
if (Compiler_Path!="")
GuiControl,,Compiler_Path, %Compiler_Path%
return
; 默认脚本编译器
Default_Compiler:
GuiControlGet, AHK_Path
SplitPath, AHK_Path, ,AHK_Dir
IfExist, %AHK_Dir%\Compiler\Ahk2Exe.exe
{
Compiler_Path=%AHK_Dir%\Compiler\Ahk2Exe.exe
GuiControl,, Compiler_Path, %Compiler_Path%
}
return
; 选择脚本编辑器
Choose_Editor:
Gui +OwnDialogs
FileSelectFile, Editor_Path, 3, , 选择脚本编辑器, 程序(*.exe)
if (Editor_Path!="")
GuiControl,,Editor_Path, %Editor_Path%
return
; 默认脚本编辑器
Default_Editor:
IfExist, %AhkDir%\SciTE\SciTE.exe
Editor_Path=%AhkDir%\SciTE\SciTE.exe
else ifExist, %A_WinDir%\system32\notepad.exe
Editor_Path=%A_WinDir%\system32\notepad.exe
GuiControl,, Editor_Path, %Editor_Path%
return
; 设置
Install:
Gui, Submit
; ===== ds920 修改 2022年1月11日 ===== 第189到191行 =====
AHK_Path:="D:\APP\AutoHotkey\AutoHotkey.exe"
Compiler_Path:="D:\APP\AutoHotkey\Compiler\Ahk2Exe.exe"
Editor_Path:="D:\APP\AutoHotkey\SciTE\SciTE.exe"
IfNotExist, %AHK_Path%
{
MsgBox, 16, , AutoHotkey 路径错误 !
return
}
IfNotExist, %Compiler_Path%
{
MsgBox, 16, , 编译器路径错误 !
return
}
IfNotExist, %Editor_Path%
{
MsgBox, 16, , 编辑器路径错误 !
return
}
; 写入注册表
RegWrite, REG_SZ, %RootKey%, %Subkey%.ahk,, %FileType%
RegWrite, REG_SZ, %RootKey%, %Subkey%.ahk\ShellNew, FileName, %Template_Name%
IfNotExist, %A_WinDir%\ShellNew\%Template_Name%
gosub Create_Template
RegWrite, REG_SZ, %RootKey%, %Subkey%%FileType%,, AutoHotkey 脚本
RegWrite, REG_SZ, %RootKey%, %Subkey%%FileType%\DefaultIcon,, %AHK_Path%`,1
RegWrite, REG_SZ, %RootKey%, %Subkey%%FileType%\Shell,, Open
RegWrite, REG_SZ, %RootKey%, %Subkey%%FileType%\Shell\Open,, 运行脚本
RegWrite, REG_SZ, %RootKey%, %Subkey%%FileType%\Shell\Open\Command,, "%AHK_Path%" "`%1" `%*
RegWrite, REG_SZ, %RootKey%, %Subkey%%FileType%\Shell\Compile,, 编译脚本
RegWrite, REG_SZ, %RootKey%, %Subkey%%FileType%\Shell\Compile-Gui,, 编译脚本 (Gui)
IfInString, Compiler_Path, Ahk2Exe.exe
{
RegWrite, REG_SZ, %RootKey%, %Subkey%%FileType%\Shell\Compile\Command,, "%Compiler_Path%" /in "`%1"
RegWrite, REG_SZ, %RootKey%, %Subkey%%FileType%\Shell\Compile-Gui\Command,, "%Compiler_Path%" /Gui /in "`%1"
}
else
{
RegWrite, REG_SZ, %RootKey%, %Subkey%%FileType%\Shell\Compile\Command,, "%Compiler_Path%" "`%1"
RegWrite, REG_SZ, %RootKey%, %Subkey%%FileType%\Shell\Compile-Gui\Command,, "%Compiler_Path%" /Gui "`%1"
}
RegWrite, REG_SZ, %RootKey%, %Subkey%%FileType%\Shell\Edit,, 编辑脚本
RegWrite, REG_SZ, %RootKey%, %Subkey%%FileType%\Shell\Edit\Command,, "%Editor_Path%" "`%1"
; ===== ds920 修改 2022年1月11日 ===== 第242行 =====
; MsgBox, 64, , 设置完毕 !
ExitApp
return
; 编辑脚本模板
Edit_Template:
GuiControlGet, Editor_Path
IfNotExist, %Editor_Path%
{
MsgBox, 64, , 脚本编辑器路径错误 !
return
}
IfNotExist, %A_WinDir%\ShellNew\%Template_Name%
gosub Create_Template
IfExist, %A_WinDir%\system32\notepad.exe
Run, *RunAs notepad.exe %A_WinDir%\ShellNew\%Template_Name%
else
Run, *RunAs %Editor_Path% %A_WinDir%\ShellNew\%Template_Name%
return
; 新建脚本模板
Create_Template:
FileAppend,
(
#NoEnv
SendMode Input
SetWorkingDir `%A_ScriptDir`%
), %A_WinDir%\ShellNew\%Template_Name%, UTF-8
IfNotExist, %A_WinDir%\ShellNew\%Template_Name%
MsgBox, 64, , 无法创建脚本模板 !`n`n请尝试使用管理员权限运行本工具。
return
; 从注册表值字符串中提取路径
PathGetPath(pSourceCmd)
{
local Path, ArgsStartPos = 0
if (SubStr(pSourceCmd, 1, 1) = """")
Path := SubStr(pSourceCmd, 2, InStr(pSourceCmd, """", false, 2) - 2)
else
{
ArgsStartPos := InStr(pSourceCmd, " ")
if ArgsStartPos
Path := SubStr(pSourceCmd, 1, ArgsStartPos - 1)
else
Path = %pSourceCmd%
}
return Path
}
/*
作者: 甲壳虫<jdchenjian@gmail.com>
博客: http://hi.baidu.com/jdchenjian
脚本说明: 此工具用来修改 AutoHotkey 脚本的右键菜单关联,适用于 AutoHotkey 安装版、绿色版。
脚本版本: 2023.10.20
TODO:
静默设置参数支持 ah2 和 ahk2 。
保留部分关联时,需要在管理员权限和普通权限下分别进行1次相同的操作才能让右键菜单显示正常。
修改作者: 兔子
2010.01.09 之前某个时间,修改AHK路径、编辑器路径、编译器路径,默认全部在当前目录下寻找
2010.01.09 去掉默认在新建菜单的勾
2010.06.21 如果SCITE为默认编辑器,则复制个人配置文件“SciTEUser.properties”到%USERPROFILE%
2010.06.25 修正因#NoEnv使%USERPROFILE%变量直接引用无效
2016.04.18 删除“2010.06.21”的改动
2021.10.17 新增“编译脚本 (GUI)”的汉化
2021.11.02 自动根据 AutoHotkey.exe 的位置定位基准目录。
2021.11.05 重构代码,精简界面,修复新建模板时的编码问题,修复编辑模板时的权限问题。
2022.04.21 为日志系统增加缓存,解决日志写入时的性能问题。微调显示。
2022.04.24 静默模式下,成功时不提示。微调显示。
2022.09.02 修复“自定义新建脚本的模板”失败的问题。
2023.10.20 静默模式下,出错时不提示,返回非0退出码。
修改作者: 布谷布谷
2022.04.15 增加.ah2 .ahk2 文件的关联,并增加脚本关联选项
2022.04.16 增加右键脚本以管理员身份运行,添加注册表操作日志
*/
#NoEnv
#SingleInstance, force
SendMode Input
SetWorkingDir %A_ScriptDir%
; 版本(仅用于显示)
Script_Version=v1.2.5
administrator:=(A_IsAdmin?"已":"未" ) . "获得管理员权限"
Gui, Font, bold s15
Gui, Add, Text, x15 y10 w275 h20 vText__ ; 设置 .xxx 文件的右键菜单
Gui, Font
Gui, Add, Radio, xp+280 yp- w50 hp vRadio_1 gOptions__ Checked1, ahk
Gui, Add, Radio, xp+50 yp- wp hp vRadio_2 gOptions__ , ahk2
Gui, Add, Radio, xp+50 yp- wp hp vRadio_3 gOptions__ , ah2
Gui, Add, Button, xp+50 yp- w50 hp vState__0 gState__ , 选项>>
Gui, Font, bold s12
Gui, Add, GroupBox, xp+60 yp w205 h320 vState__1 , 保留以下关联
Gui, Font
Gui, Add, Checkbox, xp+12 yp+30 w185 h30 vState__3 gState__ Checked1, 右键 >> 编译脚本
Gui, Add, Checkbox, xp+ yp+35 wp hp vState__4 gState__ Checked1, 右键 >> 编译脚本 (GUI)
Gui, Add, Checkbox, xp+ yp+35 wp hp vState__5 gState__ Checked1, 右键 >> 编辑脚本
Gui, Add, Checkbox, xp+ yp+35 wp hp vState__6 gState__ Checked1, 右键 >> 新建 >> ahk脚本
Gui, Add, Checkbox, xp+ yp+35 wp hp vState__7 gState__ Checked1, 右键 >> 以管理员身份运行
Gui, Add, Button, xp-2 yp+70 wp hp vState__2 gState__ , 删除所有关联
Gui, Add, Button, xp+ yp+35 wp hp vState__8 gRunAs__ , 重启并获得管理员权限
Gui, Add, GroupBox, x15 y44 w480 h50 , “运行脚本”
Gui, Add, Edit, xp+10 yp+18 w340 h20 vAHK_Path,
Gui, Add, Button, xp+350 yp- w50 hp gFind_AHK, 浏览
Gui, Add, GroupBox, x15 y104 w480 h50 , “编译脚本”
Gui, Add, Edit, xp+10 yp+18 w340 h20 vCompiler_Path ,
Gui, Add, Button, xp+350 yp- w50 hp gChoose_Compiler , 浏览
Gui, Add, Button, xp+60 yp- wp hp gDefault_Compiler, 默认
Gui, Add, GroupBox, x15 y164 w480 h50 , “编辑脚本”
Gui, Add, Edit, xp+10 yp+18 w340 h20 vEditor_Path ,
Gui, Add, Button, xp+350 yp- w50 hp gChoose_Editor , 浏览
Gui, Add, Button, xp+60 yp- wp hp gDefault_Editor, 默认
Gui, Add, GroupBox, x15 y224 w480 h50 , “新建脚本”
Gui, Add, Button, xp+10 yp+18 w340 h20 gEdit_Template, 自定义新建脚本的模板
Gui, Font, bold s15
Gui, Add, Button, x15 y290 w200 h40 gInstall Default, 设置
Gui, Add, Button, x295 yp- wp hp gCancel , 取消
Gui, Font
Gui, Font, , Arial,
Gui, Add, Edit, x15 yp+50 w695 h300 vlog HwndhLog, 注册表操作日志:`n
; 启动时隐藏高级界面
GuiControl, Hide, log
loop 8
GuiControl, Hide, State__%A_Index%
gosub, Options__
if (A_Args.1 = "/set")
gosub, Install
else
Gui, Show, AutoSize Center, AHK 脚本关联工具 %Script_Version% ( %administrator% )
return
GuiClose:
GuiEscape:
Cancel:
ExitApp
return
RunAs__:
if !(A_IsAdmin||RegExMatch(DllCall("GetCommandLine", "str"), " /restart(?!\S)"))
{
try
{
if A_IsCompiled
Run *RunAs "%A_ScriptFullPath%" /restart
else
Run *RunAs "%A_AhkPath%" /restart "%A_ScriptFullPath%"
}
ExitApp
}
return
State__:
switch A_GuiControl
{
Case "State__0":
State__0:=!State__0
loop 7
GuiControl, Show%State__0%, State__%A_Index%
if !A_IsAdmin
GuiControl, Show%State__0%, State__8
GuiControl, Show%State__0%, log
GuiControl, Text, State__0, % State__0?"<<选项":"选项>>"
Gui, Show, AutoSize
Case "State__2":
logup("清除 ." ahk__ " 文件的注册表")
RegDelete_(RootKey "\" Subkey "\" FileType)
RegDelete_(RootKey "\" Subkey "." ahk__)
logup("--------------------------------------------------------------")
MsgBox, % 4096+64, , 操作完成 !
Case "State__3","State__4","State__5","State__6","State__7":
Gui, Submit, NoHide
}
return
; 选择文件名类型
Options__:
Gui, Submit, NoHide
ahk__:=Radio_3?"ah2":Radio_2?"ahk2":"ahk"
GuiControl, Text, Text__, 设置 .%ahk__% 文件的右键菜单
GuiControl, Text, State__1, 保留 .%ahk__% 以下关联
GuiControl, Text, State__2, 删除 .%ahk__% 所有关联
; AutoHotkey 原版的相关信息写在注册表HKCR主键中,
; 尝试当前用户否有权操作该键,如果无权操作HKCR键(受限用户),
; 可通过操作注册表HKCU键来实现仅当前用户关联AHK脚本。
logup("通过操作注册表测试当前用户否有权操作该键")
if RegWrite_("REG_SZ","HKCR",".test")
IsLimitedUser:=1
if RegDelete_("HKCR", ".test")
IsLimitedUser:=1
if IsLimitedUser
{
RootKey=HKCU ; 受限用户操作HKCU键
Subkey=Software\Classes\ ; 为简化后面的脚本,此子键须以“\”结尾
}
else
{
RootKey=HKCR ; 非受限用户操作HKCR键
Subkey=
}
logup("--------------------------------------------------------------")
logup("读取 ." ahk__ " 文件的注册表")
FileType:=AHK_Path:=Compiler_Path:=Editor_Path:=Template_Name:=""
; 检查是否存在AHK注册表项
FileType:=RegRead_(RootKey "\" Subkey "." ahk__)
if (FileType!="")
{
AHK_Path := PathGetPath(RegRead_(RootKey "\" Subkey FileType "\Shell\Open\Command")) ; AHK路径
Compiler_Path := PathGetPath(RegRead_(RootKey "\" Subkey FileType "\Shell\Compile\Command")) ; 编译器路径
Compiler_Path_ := PathGetPath(RegRead_(RootKey "\" Subkey FileType "\Shell\Compile-Gui\Command")) ; 编译器路径
Editor_Path := PathGetPath(RegRead_(RootKey "\" Subkey FileType "\Shell\Edit\Command")) ; 编辑器路径
Template_Name := RegRead_(RootKey "\" Subkey "." ahk__ "\ShellNew", "FileName") ; 模板文件名
(!Compiler_Path&&Compiler_Path:=Compiler_Path_)
}
else
FileType:="AutoHotkeyScript" . (ahk__="ahk"?"":"." . ahk__)
logup("--------------------------------------------------------------")
; 通过 AutoHotkey.exe 的位置来定位基准目录
SplitPath, A_AhkPath, , AhkDir
FilePattern:=AhkDir . (ahk__="ahk"?"":"\V2") . "\AutoHotkey.exe"
; 没有从注册表获得路径则尝试从 AutoHotkey.exe 的位置开始寻找目标
(!AHK_Path&&FileExist(FilePattern)&&AHK_Path:=FilePattern)
FilePattern:=AhkDir . "\Compiler\Ahk2Exe.exe"
(!Compiler_Path&&FileExist(FilePattern)&&Compiler_Path:=FilePattern)
FilePattern:=AhkDir . "\SciTE\SciTE.exe"
(!Editor_Path&&FileExist(FilePattern)&&Editor_Path:=FilePattern)
(!Template_Name&&Template_Name:="Template." . ahk__)
GuiControl, , AHK_Path, %AHK_Path%
GuiControl, , Compiler_Path, %Compiler_Path%
GuiControl, , Editor_Path, %Editor_Path%
return
logup(value:="")
{
global hLog, log
static firstIn:=true, text:=""
if (firstIn)
{
text := log
firstIn := false
}
text .= A_YYYY "-" A_MM "-" A_DD " " A_Hour ":" A_Min ":" A_Sec "." A_MSec " :" value "`n"
SetTimer, buffer, -200 ; 缓存间隔200毫秒内的日志,没有新日志后再一次性写入
return
buffer:
GuiControl, , log, %text%
PostMessage, 0x0115, 7, 0, , ahk_id %hLog%
return
}
RegRead_(KeyName, ValueName:="")
{
logup("读取:" KeyName " " ValueName)
RegRead, OutputVar, %KeyName%, %ValueName%
if (ErrorLevel_:=ErrorLevel)
logup("失败:" (A_IsAdmin?"":"权限不够 或 ") "注册表不存在")
else
logup("数据:" OutputVar)
return OutputVar
}
RegWrite_(ValueType, KeyName, ValueName:="", Value:="")
{
logup("写入:" ValueType ", " KeyName ", " ValueName ", " Value)
RegWrite, %ValueType%, %KeyName%, %ValueName%, %Value%
if (ErrorLevel_:=ErrorLevel)
logup("失败:" (A_IsAdmin?"未知错误":"权限不够"))
else
logup("成功")
return ErrorLevel_
}
RegDelete_(KeyName, ValueName:="")
{
logup("删除:" KeyName ", " ValueName)
RegDelete, %KeyName%, %ValueName%
if (ErrorLevel_:=ErrorLevel)
logup("失败:" (A_IsAdmin?"":"权限不够 或") "注册表不存在")
else
logup("成功")
return ErrorLevel_
}
; 查找 AutoHotkey 主程序
Find_AHK:
Gui +OwnDialogs
FileSelectFile, AHK_Path, 3, , 查找 AutoHotkey.exe, AutoHotkey.exe
if (AHK_Path!="")
GuiControl, ,AHK_Path, %AHK_Path%
gosub Default_Compiler
return
; 选择脚本编译器
Choose_Compiler:
Gui +OwnDialogs
FileSelectFile, Compiler_Path, 3, , 选择脚本编译器, 程序(*.exe)
if (Compiler_Path!="")
GuiControl, ,Compiler_Path, %Compiler_Path%
return
; 默认脚本编译器
Default_Compiler:
GuiControlGet, AHK_Path
SplitPath, AHK_Path, , AHK_Dir
IfExist, %AHK_Dir%\Compiler\Ahk2Exe.exe
{
Compiler_Path=%AHK_Dir%\Compiler\Ahk2Exe.exe
GuiControl, , Compiler_Path, %Compiler_Path%
}
return
; 选择脚本编辑器
Choose_Editor:
Gui +OwnDialogs
FileSelectFile, Editor_Path, 3, , 选择脚本编辑器, 程序(*.exe)
if (Editor_Path!="")
GuiControl, ,Editor_Path, %Editor_Path%
return
; 默认脚本编辑器
Default_Editor:
IfExist, %AhkDir%\SciTE\SciTE.exe
Editor_Path=%AhkDir%\SciTE\SciTE.exe
else ifExist, %A_WinDir%\system32\notepad.exe
Editor_Path=%A_WinDir%\system32\notepad.exe
GuiControl, , Editor_Path, %Editor_Path%
return
; 设置
Install:
Gui, Submit, NoHide
logup("写入注册表")
IfNotExist, %AHK_Path%
{
if (A_Args.1 = "/set")
{
ExitApp 1
}
else
{
logup("AutoHotkey 路径错误 !")
MsgBox, % 4096+16, , AutoHotkey 路径错误 !
return
}
}
RegWrite_("REG_SZ", RootKey "\" Subkey "." ahk__, , FileType)
RegWrite_("REG_SZ", RootKey "\" Subkey "." ahk__ "\ShellNew", "FileName", Template_Name)
RegWrite_("REG_SZ", RootKey "\" Subkey FileType "\Shell", , "Open")
RegWrite_("REG_SZ", RootKey "\" Subkey FileType "\Shell\Open", , "运行脚本")
; %AHK_Path%,1 这种图标设置方式没有成功,所以只能改为 Compiler_Path
RegWrite_("REG_SZ", RootKey "\" Subkey FileType "\Shell\Open","Icon", """" Compiler_Path """")
RegWrite_("REG_SZ", RootKey "\" Subkey FileType "\Shell\Open\Command", , """" AHK_Path """ ""%1"" %*")
if State__3
{
IfNotExist, %Compiler_Path%
{
if (A_Args.1 = "/set")
{
ExitApp 3
}
else
{
logup("编译器路径错误 !")
MsgBox, % 4096+16, , 编译器路径错误 !
return
}
}
RegWrite_("REG_SZ", RootKey "\" Subkey FileType "\Shell\Compile", , "编译脚本")
RegWrite_("REG_SZ", RootKey "\" Subkey FileType "\Shell\Compile","Icon", """" Compiler_Path """")
IfInString, Compiler_Path, Ahk2Exe.exe
RegWrite_("REG_SZ", RootKey "\" Subkey FileType "\Shell\Compile\Command", , """" Compiler_Path """ /in ""%1""")
else
RegWrite_("REG_SZ", RootKey "\" Subkey FileType "\Shell\Compile\Command", , """" Compiler_Path """ ""%1""")
}
else
RegDelete_(RootKey "\" Subkey "\" FileType "\Shell\Compile")
if State__4
{
IfNotExist, %Compiler_Path%
{
if (A_Args.1 = "/set")
{
ExitApp 4
}
else
{
logup("编译器路径错误 !")
MsgBox, % 4096+16, , 编译器路径错误 !
return
}
}
RegWrite_("REG_SZ", RootKey "\" Subkey FileType "\Shell\Compile-Gui", , "编译脚本 (GUI)")
RegWrite_("REG_SZ", RootKey "\" Subkey FileType "\Shell\Compile-Gui","Icon", """" Compiler_Path """")
IfInString, Compiler_Path, Ahk2Exe.exe
RegWrite_("REG_SZ", RootKey "\" Subkey FileType "\Shell\Compile-Gui\Command", , """" Compiler_Path """ /gui /in ""%1""")
else
RegWrite_("REG_SZ", RootKey "\" Subkey FileType "\Shell\Compile-Gui\Command", , """" Compiler_Path """ /gui ""%1""")
}
else
RegDelete_(RootKey "\" Subkey "\" FileType "\Shell\Compile-Gui")
if State__5
{
IfNotExist, %Editor_Path%
{
if (A_Args.1 = "/set")
{
ExitApp 5
}
else
{
logup("编辑器路径错误 !")
MsgBox, % 4096+16, , 编辑器路径错误 !
return
}
}
RegWrite_("REG_SZ", RootKey "\" Subkey FileType "\Shell\Edit", , "编辑脚本")
RegWrite_("REG_SZ", RootKey "\" Subkey FileType "\Shell\Edit","Icon", """" Editor_Path """")
RegWrite_("REG_SZ", RootKey "\" Subkey FileType "\Shell\Edit\Command", , """" Editor_Path """ ""%1""")
}
else
RegDelete_(RootKey "\" Subkey "\" FileType "\Shell\Edit")
if State__6
{
FilePattern=%A_WinDir%\ShellNew\%Template_Name%
IfNotExist, %FilePattern%
gosub Create_Template
RegWrite_("REG_SZ", RootKey "\" Subkey FileType, , "AutoHotkey" (ahk__="ahk" ? "" : 2) " 脚本")
RegWrite_("REG_SZ", RootKey "\" Subkey FileType "\DefaultIcon", , AHK_Path ",1")
}
else
RegWrite_("REG_SZ", RootKey "\" Subkey FileType)
if State__7
{
RegWrite_("REG_SZ", RootKey "\" Subkey FileType "\Shell\runas", "HasLUAShield")
RegWrite_("REG_SZ", RootKey "\" Subkey FileType "\Shell\runas\Command", , """" AHK_Path """ ""%1"" %*")
}
else
RegDelete_(RootKey "\" Subkey "\" FileType "\Shell\runas")
logup("设置完毕 !")
logup("--------------------------------------------------------------")
if (A_Args.1="/set")
ExitApp
MsgBox, % 4096+64, , 设置完毕 !
return
; 编辑脚本模板
Edit_Template:
GuiControlGet, Editor_Path
IfNotExist, %Editor_Path%
{
MsgBox, % 4096+16, , 脚本编辑器路径错误 !
return
}
IfNotExist, %A_WinDir%\ShellNew\%Template_Name%
gosub Create_Template
ifExist, %A_WinDir%\system32\notepad.exe
Run, *RunAs notepad.exe %A_WinDir%\ShellNew\%Template_Name%
else
Run, *RunAs %Editor_Path% %A_WinDir%\ShellNew\%Template_Name%
return
; 新建脚本模板
Create_Template:
if (ahk__ = "ahk")
txt:="#NoEnv`r`nSendMode Input`r`nSetWorkingDir %A_ScriptDir%`r`n"
if (ahk__ = "ahk2" || ahk__ = "ah2")
txt:="SendMode ""Input""`r`nSetWorkingDir A_ScriptDir`r`n"
FileCreateDir %A_WinDir%\ShellNew
FileAppend, %txt%, %A_WinDir%\ShellNew\%Template_Name%, UTF-8
IfNotExist, %A_WinDir%\ShellNew\%Template_Name%
if (A_Args.1 = "/set")
{
ExitApp 6
}
else
{
logup("无法创建脚本模板 !")
MsgBox, % 4096+16, , 无法创建脚本模板 !`n`n请尝试使用管理员权限运行本工具。
return
}
return
; 从注册表值字符串中提取路径
PathGetPath(pSourceCmd)
{
local Path, ArgsStartPos = 0
if (SubStr(pSourceCmd, 1, 1) = """")
Path := SubStr(pSourceCmd, 2, InStr(pSourceCmd, """", False, 2) - 2)
else
{
ArgsStartPos := InStr(pSourceCmd, " ")
if ArgsStartPos
Path := SubStr(pSourceCmd, 1, ArgsStartPos - 1)
else
Path = %pSourceCmd%
}
return Path
}
/*
版本: 1.7
操作系统: WinXP
原作者: 甲壳虫<jdchenjian@gmail.com>
甲壳虫博客: http://hi.baidu.com/jdchenjian
[说明]
脚本描述=此工具用来修改 AutoHotkey 脚本的右键菜单关联,适用于 AutoHotkey 安装版、绿色版。
LastChangedRevision = 7
LastChangedDate = 2013-3-17
*/
#Persistent
#NoEnv
#SingleInstance, force
SendMode Input
SetWorkingDir %A_ScriptDir%
IniRead LastChangedRevision, %A_ScriptFullPath%, 说明, LastChangedRevision, %A_Space%
IniRead LastChangedDate, %A_ScriptFullPath%, 说明, LastChangedDate, %A_Space%
ScriptName = ScriptSetting 1.0.%LastChangedRevision% (%LastChangedDate%)
Change_History=
(
修改历史:
sunwind2013-3-17修改一处错误Template_Path
sunwind2013-2-24增加CLSID and APPID v1.0.6
sunwind2013-1-8 修改完善 v1.0.5
1.增加shellnew路径
2.增加自身配置读取(需要本脚本的编码为ANSI或UTF-16 LE)
sunwind2012-12-11修改完善 v1.0.4
使用方法:把本脚本放到AutoHotkey.exe目录中,拖动本脚本到AutoHotkey.exe上。
1.将右键菜单中的,编辑代码 编译代码 改为英文
2.使右键菜单支持热键
3.增加默认编辑器为%A_ScriptDir%\SciTE\SciTE.exe
4.增加ahk脚本拖放支持,就是可以将文件拖放到ahk脚本上。
)
; CLSID and APPID for this script: don't reuse, please!
CLSID_SciTE4AHK := "{D7334085-22FB-416E-B398-B5038A5A0784}"
APPID_SciTE4AHK := "SciTE4AHK.Application"
; AutoHotkey 原版的相关信息写在注册表HKCR主键中,
; 尝试是当前用户否有权操作该键,如果无权操作HKCR键(受限用户),
IsLimitedUser:=0
RegWrite, REG_SZ, HKCR, .test
if ErrorLevel
IsLimitedUser:=1
RegDelete, HKCR, .test
if ErrorLevel
IsLimitedUser:=1
if IsLimitedUser=0 ; 非受限用户操作HKCR键
{
RootKey=HKCR
Subkey=
;~ MsgBox HKCR
}
else ; 受限用户操作HKCU键
{
RootKey=HKCU
Subkey=Software\Classes\ ; <-- 为简化后面的脚本,此子键须以“\”结尾
;~ MsgBox hkcu
}
; 检查是否存在AHK注册表项
RegRead, FileType, %RootKey%, %Subkey%.ahk
if FileType<>
{
RegRead, value, %RootKey%, %Subkey%%FileType%\Shell\Open\Command ;AHK路径
AHK_Path:=PathGetPath(value)
RegRead, value, %RootKey%, %Subkey%%FileType%\Shell\Edit\Command ;编辑器路径
Editor_Path:=PathGetPath(value)
RegRead, value, %RootKey%, %Subkey%%FileType%\Shell\Compile\Command ;编译器路径
Compiler_Path:=PathGetPath(value)
RegRead, Template_Path, %RootKey%, %Subkey%.ahk\ShellNew, FileName ;模板文件名
}
else
FileType=AutoHotkeyScript
if AHK_Path=
{
IfExist, %A_ScriptDir%\AutoHotkey.exe
AHK_path=%A_ScriptDir%\AutoHotkey.exe
}
if Editor_Path=
{
IfExist, %A_ScriptDir%\SciTE\SciTE.exe
Editor_Path=%A_ScriptDir%\SciTE\SciTE.exe
else{
IfExist, %A_WinDir%\notepad.exe
Editor_Path=%A_WinDir%\notepad.exe
}
}
if Compiler_Path=
{
IfExist, %A_ScriptDir%\Compiler\Ahk2Exe.exe
Compiler_Path=%A_ScriptDir%\Compiler\Ahk2Exe.exe
}
if Template_Path=
{
IfExist, %A_ScriptDir%\AutoHotkey.exe
Template_Path=%A_ScriptDir%\Template.ahk
}
else
{
SplitPath,Template_Path,Template_Name,Template_Path
Template_Path=%A_WinDir%\ShellNew\%Template_Name%
}
Gui, Add, Tab, x10 y10 w480 h300 Choose1, 设置|说明|更新历史
Gui, Tab, 1
Gui, Add, GroupBox, x20 y40 w460 h50 , “运行脚本”关联的 AutoHotkey
Gui, Add, Edit, x35 y60 w340 h20 vAHK_Path, %AHK_path%
Gui, Add, Button, x385 y60 w40 h20 gFind_AHK, 浏览
Gui, Add, GroupBox, x20 y100 w460 h50 , “编辑脚本”关联的编辑器
;~ MsgBox %Editor_Path%
Gui, Add, Edit, x35 y120 w340 h20 vEditor_Path, %Editor_Path%
Gui, Add, Button, x385 y120 w40 h20 gChoose_Editor, 浏览
Gui, Add, Button, x430 y120 w40 h20 gDefault_Editor, 默认
Gui, Add, GroupBox, x20 y160 w460 h50 , “编译脚本”关联的编译器
Gui, Add, Edit, x35 y180 w340 h20 vCompiler_Path, %Compiler_Path%
Gui, Add, Button, x385 y180 w40 h20 gChoose_Compiler, 浏览
Gui, Add, Button, x430 y180 w40 h20 gDefault_Compiler, 默认
Gui, Add, GroupBox, x20 y220 w460 h50 , “模板”存放路径
Gui, Add, Edit, x35 y240 w340 h20 vTemplate_Path, %Template_Path%
Gui, Add, Button, x385 y240 w40 h20 gChoose_Template, 浏览
Gui, Add, Button, x430 y240 w40 h20 gDefault_Template, 默认
Gui, Add, Checkbox, x35 y280 w270 h20 Checked gNew_Script vNew_Script, 右键“新建”菜单中增加“AutoHotkey 脚本”
Gui, Add, Button, x310 y280 w80 h20 vEdit_Template gEdit_Template, 编辑脚本模板
Gui, Add, Button, x400 y280 w80 h20 vDelete_Template gDelete_Template, 删除脚本模板
Gui, Tab, 2
Gui, Font, bold
Gui, Add, Text,, AutoHotkey 脚本关联工具 %ScriptName%
Gui, Font
Gui, Font, CBlue Underline
Gui, Add, Text, gWebsite, 原作者:甲壳虫 <jdchenjian@gmail.com>`n`n博客:http://hi.baidu.com/jdchenjian
Gui, Font
Gui, Add, Text, w450, 此工具用来修改 AutoHotkey 脚本的右键菜单关联,适用于 AutoHotkey 安装版、绿色版。`n`n此版本是sunwind(QQ1576157) 基于甲壳虫的v1.0.3版本修改完善的。
Gui, Add, Text, w450, 您可以用它来修改默认脚本编辑器、编译器,修改默认的新建脚本模板。设置后,在右键菜单中添加“运行脚本”、“编辑脚本”、“编译脚本”和“新建 AutoHotkey 脚本”等选项。
Gui, Add, Text, w450, 要取消脚本的系统关联,请按“卸载”。注意:卸载后您将无法通过双击来运行脚本,也不能通过右键菜单来启动脚本编辑器...
Gui, Tab, 3
Gui, Font, bold
Gui, Add, Text,, 更新历史
Gui, Font
Gui, Add, Text, w450, %Change_History%
Gui, Tab
Gui, Add, Button, x100 y320 w60 h20 default gInstall, 设置
Gui, Add, Button, x200 y320 w60 h20 gUninstall, 卸载
Gui, Add, Button, x300 y320 w60 h20 gCancel, 取消
Gui, Show, x250 y200 h350 w500 Center, %ScriptName%
IfNotExist, %Template_Path%
GuiControl, Disable, Delete_Template ; 使“删除脚本模板”按钮无效
; 当鼠标指向链接时,指针变成手形
hCurs:=DllCall("LoadCursor","UInt",NULL,"Int",32649,"UInt") ;IDC_HAND
OnMessage(0x200,"WM_MOUSEMOVE")
return
; 改变鼠标指针为手形
WM_MOUSEMOVE(wParam,lParam)
{
global hCurs
MouseGetPos,,,,ctrl
if ctrl in Static2
DllCall("SetCursor","UInt",hCurs)
return
}
return
GuiClose:
GuiEscape:
Cancel:
ExitApp
; 查找 AutoHotkey 主程序
Find_AHK:
Gui +OwnDialogs
FileSelectFile, AHK_Path, 3, , 查找 AutoHotkey.exe,*.exe
if AHK_Path<>
GuiControl,,AHK_Path, %AHK_Path%
gosub Default_Editor
gosub Default_Compiler
return
; 选择脚本编辑器
Choose_Editor:
Gui +OwnDialogs
FileSelectFile, Editor_Path, 3, , 选择脚本编辑器, 程序(*.exe)
if Editor_Path<>
GuiControl,,Editor_Path, %Editor_Path%
return
; 默认脚本编辑器
Default_Editor:
IfExist, %A_ScriptDir%\SciTE\SciTE.exe
Editor_Path=%A_ScriptDir%\SciTE\SciTE.exe
else ifExist, %A_WinDir%\notepad.exe
Editor_Path=%A_WinDir%\notepad.exe
else ifExist, %A_WinDir%\system32\notepad.exe
Editor_Path=%A_WinDir%\system32\notepad.exe
GuiControl,, Editor_Path, %Editor_Path%
return
; 选择脚本编译器
Choose_Compiler:
Gui +OwnDialogs
FileSelectFile, Compiler_Path, 3, , 选择脚本编译器, 程序(*.exe)
if Compiler_Path<>
GuiControl,,Compiler_Path, %Compiler_Path%
return
; 默认脚本编译器
Default_Compiler:
GuiControlGet, AHK_Path
SplitPath, AHK_Path, ,AHK_Dir
IfExist, %AHK_Dir%\Compiler\Ahk2Exe.exe
{
Compiler_Path=%AHK_Dir%\Compiler\Ahk2Exe.exe
GuiControl,, Compiler_Path, %Compiler_Path%
}
return
; 选择模板位置
Choose_Template:
FileSelectFile, Template_Path, 3, , 选择脚本模板位置 程序(*.ahk)
if Template_Path<>
GuiControl,,Template_Path, %Template_Path%
return
; 默认模板位置
Default_Template:
IfExist, %A_ScriptDir%\AutoHotkey.exe
Template_Path=%A_ScriptDir%\Template.ahk
else
Template_Path=Template.ahk ;会默认放到%A_WinDir%\ShellNew\
GuiControl,, Template_Path, %Template_Path%
return
; 设置
Install:
Gui, Submit
IfNotExist, %AHK_Path%
{
MsgBox, 16, %ScriptName%, AutoHotkey 路径错误 !
return
}
IfNotExist, %Editor_Path%
{
MsgBox, 16, %ScriptName%, 编辑器路径错误 !
return
}
IfNotExist, %Compiler_Path%
{
MsgBox, 16, %ScriptName%, 提示未设置正确,不过不强制设置,点击确定继续 !
;~ Return
}
; 写入注册表
RegWrite, REG_SZ, %RootKey%, %Subkey%.ahk,, %FileType%
if New_Script=1
{
RegWrite, REG_SZ, %RootKey%, %Subkey%.ahk\ShellNew, FileName, %Template_Path%
IfNotExist, %Template_Path%
gosub Create_Template
;~ IfNotExist, %A_WinDir%\ShellNew\%Template_Name%
;~ Gosub Create_Template
}
else
{
RegDelete, %RootKey%, %Subkey%.ahk\ShellNew
IfExist, %Template_Path%
;~ IfExist, %A_WinDir%\ShellNew\%Template_Name%
gosub Delete_Template
}
RegWrite, REG_SZ, %RootKey%, %Subkey%%FileType%,, AutoHotkey 脚本 ;AutoHotkey Script
RegWrite, REG_SZ, %RootKey%, %Subkey%%FileType%\DefaultIcon,, %AHK_Path%`,1
RegWrite, REG_SZ, %RootKey%, %Subkey%%FileType%\Shell,, Open
RegWrite, REG_SZ, %RootKey%, %Subkey%%FileType%\Shell\Open,, 运行脚本(&R) ;Run Script 运行
;RegWrite, REG_SZ, %RootKey%, %Subkey%%FileType%\Shell\Open\Command,, "%AHK_Path%" /CP936 "`%1" `%*
RegWrite, REG_SZ, %RootKey%, %Subkey%%FileType%\Shell\Open\Command,, "%AHK_Path%" "`%1" `%*
RegWrite, REG_SZ, %RootKey%, %Subkey%%FileType%\Shell\Edit,, 编辑脚本(&E) ;Edit Script 编辑
RegWrite, REG_SZ, %RootKey%, %Subkey%%FileType%\Shell\Edit\Command,, "%Editor_Path%" "`%1"
RegWrite, REG_SZ, %RootKey%, %Subkey%%FileType%\Shell\Compile,, 编译脚本(&C) ;Compile Script
RegWrite, REG_SZ, %RootKey%, %Subkey%%FileType%\ShellEx\DropHandler,,{86C86720-42A0-1069-A2E8-08002B30309D} ;DropHandler
IfInString, Compiler_Path, Ahk2Exe.exe
RegWrite, REG_SZ, %RootKey%, %Subkey%%FileType%\Shell\Compile\Command,, "%Compiler_Path%" /in "`%1"
else
RegWrite, REG_SZ, %RootKey%, %Subkey%%FileType%\Shell\Compile\Command,, "%Compiler_Path%" "`%1"
RegisterIDs(CLSID_SciTE4AHK, APPID_SciTE4AHK)
MsgBox, 64, %ScriptName%, 设置完毕 !
ExitApp
; 卸载
Uninstall:
MsgBox, 36, %ScriptName%
, 注意:卸载后您将无法通过双击来运行脚本,也不能通过右键菜单来启动脚本编辑器...`n`n确定要取消 AHK 脚本的系统关联吗 ?
IfMsgBox, Yes
{
RegDelete, %RootKey%, %Subkey%.ahk
RegDelete, %RootKey%, %Subkey%%FileType%
RevokeIDs(CLSID_SciTE4AHK, APPID_SciTE4AHK)
gosub Delete_Template
ExitApp
}
return
; 编辑脚本模板
Edit_Template:
GuiControlGet, Editor_Path
IfNotExist, %Editor_Path%
{
MsgBox, 64, %ScriptName%, 脚本编辑器路径错误 !
return
}
;~ IfNotExist, %A_WinDir%\ShellNew\%Template_Name%
IfNotExist, %Template_Path%
gosub Create_Template
Run, %Editor_Path% %Template_Path%
;~ Run, %Editor_Path% %A_WinDir%\ShellNew\%Template_Name%
return
; 使编辑脚本模板按钮有效/无效
New_Script:
GuiControlGet, New_Script
if New_Script=0
GuiControl, Disable, Edit_Template
else
GuiControl, Enable, Edit_Template
return
; 新建脚本模板
Create_Template:
GuiControlGet, AHK_Path
FileGetVersion, AHK_Ver, %AHK_Path%
FileAppend,
(
/* 名称: 版本:v1.0 AutoHotkey:%AHK_Ver% 编码:UTF-8 BOM
作者:纯属意外
说明:
*/
;#NoTrayIcon ; 不显示托盘图标
#NoEnv ; 不检查环境变量
#SingleInstance Ignore ; 忽略重复运行脚本(force|ignore|off)
SendMode Input ; 改变按键发送模式
SetWorkingDir `%A_ScriptDir`% ; 设置脚本工作目录
; --------------------------------------------------------------------------------
), %Template_Path%,UTF-8
;~ ), %A_WinDir%\ShellNew\%Template_Name%
GuiControl, Enable, Delete_Template ; 使“删除脚本模板”按钮有效
return
; 删除脚本模板
Delete_Template:
MsgBox, 36, %ScriptName%
, 要删除当前的 AHK 脚本模板吗 ?`n`n脚本模板被删除后,仍可通过本工具重建模板。
IfMsgBox, Yes
FileDelete, %Template_Path%
;~ FileDelete, %A_WinDir%\ShellNew\%Template_Name%
GuiControl, Disable, Delete_Template ; 使“删除脚本模板”按钮无效
return
; 打开网站
Website:
Run, http://hi.baidu.com/jdchenjian
return
RegisterIDs(CLSID, APPID)
{
RegWrite, REG_SZ, HKCU, Software\Classes\%APPID%,, %APPID%
RegWrite, REG_SZ, HKCU, Software\Classes\%APPID%\CLSID,, %CLSID%
RegWrite, REG_SZ, HKCU, Software\Classes\CLSID\%CLSID%,, %APPID%
}
RevokeIDs(CLSID, APPID)
{
RegDelete, HKCU, Software\Classes\%APPID%
RegDelete, HKCU, Software\Classes\CLSID\%CLSID%
}
; 从注册表值字符串中提取路径
PathGetPath(pSourceCmd)
{
local Path, ArgsStartPos = 0
OutputDebug,%pSourceCmd%
if (SubStr(pSourceCmd, 1, 1) = """")
{
Path := SubStr(pSourceCmd, 2, InStr(pSourceCmd, """", false, 2) - 2)
OutputDebug,lf:%Path%
}
else
{
ArgsStartPos := InStr(pSourceCmd, " ")
if ArgsStartPos
Path := SubStr(pSourceCmd, 1, ArgsStartPos - 1)
else
Path = %pSourceCmd%
OutputDebug,Else:%Path%
}
return Path
}
; ====================================================================================================
; 文件路径和文件名:C:\APP\Everything\Everything-ahk.ahk
; 作用用途:按快捷键 ` (即~键,位于Esc键正下方,位于Tab键正上方)时显示或者隐藏Everything
; Everything 基于名称快速定位文件和文件夹,根据部分文件名快速搜索Windows电脑硬盘中的文件
; https://www.voidtools.com/zh-cn/
; https://www.voidtools.com/Everything-1.4.1.1026.x64.zip
; 程序作者(脚本编程、压缩打包、测试、上传和分享推广):徐亮 138####5488 E-Mail To: 595076941@qq.com
; ====================================================================================================
; 设置脚本参数属性
#Requires AutoHotkey v1.1.37.02
#SingleInstance force
#Persistent
DetectHiddenWindows,On ;设置脚本可以 "看见" 隐藏的窗口.
SetTitleMatchMode,2 ; 2: 窗口标题的任意位置包含 WinTitle 才能匹配.
Menu, Tray, Icon,%A_ScriptDir%\Ico.ico
; 包含外部脚本(使脚本表现得好像指定文件的内容出现在这个位置一样.)
#Include %A_ScriptDir%\Lib\RunWith.ahk ; 强制自身进程以 管理员权限 或 普通权限 或 ANSI 或 U32 或 U64 版本运行。
#Include %A_ScriptDir%\Lib\Go.ahk ; 多进程热键——快速响应随时中止 v2.1 By FeiYue
; 强制自身以 ansi + 管理员权限 运行,编译此脚本时选择 ANSI 32位 。
runwith("admin","ansi")
; 设置快捷键(设置热键)` (即~键,位于Esc键正下方,位于Tab键正上方)
Hotkey,``,ActiveOrHideEverything
; 按 Win + Z 终止此脚本的运行
; #z::ExitApp
return
; 显示或者隐藏Everything函数
ActiveOrHideEverything()
{
Go.Go("aaa")
}
return
; 显示或者隐藏Everything的进程(线程叠加和双进程交替重启,快速响应热键事件)
aaa:
IfWinActive,Everything ahk_class EVERYTHING
{
; 关闭Everything窗口,显示托盘图标,后台运行Everything索引
; WinClose,Everything ahk_class EVERYTHING
; WinHide,Everything ahk_class EVERYTHING
WinMinimize,Everything ahk_class EVERYTHING
WinActivate,Program Manager
; WinActivate,ahk_exe explorer.exe
WinActivate,ahk_class Shell_TrayWnd
; WinActivate,ahk_class Progman
}
else
{
; 运行Everything(如果没有运行的话)
if A_Is64bitOS
{
IfExist,C:\APP\Everything\Everything64.exe
{
Run,C:\APP\Everything\Everything64.exe
}
else
{
MsgBox,0,,找不到文件 C:\APP\Everything\Everything64.exe,5
}
}
else
{
IfExist,C:\APP\Everything\Everything.exe
{
Run,C:\APP\Everything\Everything.exe
}
else
{
MsgBox,0,,找不到文件 C:\APP\Everything\Everything.exe,5
}
}
; 创建,显示和激活(切换到)Everything窗口
loop,100
{
WinShow,Everything ahk_class EVERYTHING
WinGet, WinEverythingID, ID,Everything ahk_class EVERYTHING
DllCall("SwitchToThisWindow", "UInt", WinEverythingID, "UInt", 1)
WinActivate,Everything ahk_class EVERYTHING
IfWinActive,Everything ahk_class EVERYTHING
{
Sleep,1
WinMove,Everything ahk_class EVERYTHING,,A_ScreenWidth/2,20,A_ScreenWidth/2-10,A_ScreenHeight-170
Sleep,1
ControlFocus,Edit1,Everything ahk_class EVERYTHING
Sleep,1
ControlFocus,Edit1,Everything ahk_class EVERYTHING
Sleep,1
; 此处的“点击搜索输入框时选中所有文字”、
; “窗口激活时自动聚焦于输入框”等功能特性通过Everything程序的选项实现
; Everything程序的选项信息保存在文件C:\APP\Everything\Everything.ini中.
; 此处不再通过移动鼠标光标并3击搜索框实现全选
; 由于用Ctrl+A全选文本框有时候会填入字母 a ,所以此处先获取控件位置,再移动鼠标光标,最后鼠标叁击文本框控件,文本中间有空格时双击无法全选,必需叁击
; ControlGetPos, x, y, w, h,Edit1,Everything ahk_class EVERYTHING
; Sleep,1
; MouseMove, x+200, y+6
; Sleep,1
; Click,3
; Sleep,1
break
}
else
{
Sleep,1
}
}
}
Go.Go()
return
;!@Install@!UTF-8!
InstallPath="D:\\APP"
GUIMode="1"
OverwriteMode="1+8"
RunProgram="waitall:\"D:\\APP\\7z-SFX-Builder\\7z-SFX-Builder.bat\""
;!@InstallEnd@!
7zSFXBuilder_SFXName=D:\APP\7z-SFX-Builder.exe
7zSFXBuilder_SFXIcon=D:\APP\7z-SFX-Builder\7z-SFX-Builder.ico
7zSFXBuilder_UseDefMod=7zsd_LZMA2
7zSFXBuilder_SFXFile_1=D:\APP\7z-SFX-Builder\
7zSFXBuilder_7Zip_Level=Ultra
7zSFXBuilder_7Zip_Method=LZMA2
7zSFXBuilder_7Zip_Dictionary=64 MB
7zSFXBuilder_7Zip_BlockSize=Solid