注册表中%1与%*对bat文件参数传递的影响
目的: 把bat加到右键菜单,多选文件时,把多个文件作为参数传给bat; (不采用拖放)
遇到问题: 以 %1 传递会打开多个cmd窗口同步运行bat,而不是把"多个文件"传递给一个窗口运行bat.
以 %* 传递会导致参数传递失败. (同样打开了多个cmd窗口同步运行bat)
期望: 大家把测试结果交流一下,都是哪种情况. 以便知道是个人系统问题还是普遍现象.
测试方法: 先空运行一次bat'再 单选\多选JPG图片,右键菜单"JPG图片测试" 运行.
测试代码如下:- @echo off
- goto:end 控制更改注册表,下次生效,顶端加 rem 注释掉
- :start ===================================================
- for /f "skip=4 tokens=3" %%a in ('REG QUERY "HKLM\Software\hf'file" /v resize_pic 2^>nul') do set KEY_v=%%a
- if "%KEY_v%" EQU "1" (
- reg add "HKLM\SOFTWARE\Classes\jpegfile\shell\JPG图片测试&J\command" /ve /d "\"%~f0\" \"%%1\"" /f>nul
- reg add "HKLM\Software\hf'file" /v resize_pic /d 2 /f>nul
- ) else (
- reg add "HKLM\SOFTWARE\Classes\jpegfile\shell\JPG图片测试&J\command" /ve /d "\"%~f0\" %%*" /f>nul
- reg add "HKLM\Software\hf'file" /v resize_pic /d 1 /f>nul
- )
- :end ======================================================
- for /f "skip=4 tokens=3" %%a in ('REG QUERY "HKLM\Software\hf'file" /v resize_pic 2^>nul') do set KEY_v=%%a
- if "%KEY_v%" EQU "1" (echo 测试参数%%* :) else (echo 测试参数%%1 :)
- echo %%1=%1
- echo %%2=%2
- echo %%*=%*
- pause
- exit /b
复制代码 PS: 原来的系统没有这种问题,打了补丁就出问题了. 又做了一遍雨林木风的.
[ 本帖最后由 hfg1977 于 2010-10-29 05:21 编辑 ] |