[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
回复 5# HeyJude

1楼描述的两个步骤中,文件名“××× - 副本.jpg”好像是多余的,只有“xxx.png"是最终需要的!?

TOP

回复 7# HeyJude

    如果要保留源文件,直接使用copy命令,
copy /y "%~1" "%~n1.png"
把以上命令添加到“.jpg”扩展名的注册项中即可,
    如果不保留源文件,就使用ren命令。

具体写代码时,判断一下“.jpg”是否已注册,
如果已注册,使用已注册项添加右键菜单,
如果未注册,使用自定义注册项添加右键菜单。

在批处理中用命令“reg add“实现添加右键菜单。

TOP

回复 9# HeyJude


    那就直接给一个完整bat代码:
  1. @echo off&Title 添加右键“复制文件并改扩展名”&setlocal EnableExtensions
  2. SET "OldExt=.jpg"           ||@rem 指定源文件扩展名
  3. SET "KeyName=JpegFile"      ||@rem 定义源文件扩展名的注册项(如果指定扩展名已注册,则非必要,否则不能为空)
  4. SET "NewExt=.png"           ||@rem 指定新文件扩展名
  5. (REG QUERY "HKCR\%OldExt%" /ve >nul 2>nul)||(GOTO :REG)
  6. FOR /F "skip=4 tokens=1-3* delims= " %%I IN ('REG QUERY "HKCR\%OldExt%" /ve') DO IF NOT "%%~K"=="" (SET "KeyName=%%~K"&GOTO :REG) ELSE (GOTO :REG)
  7. :REG
  8. REG ADD "HKCR\%OldExt%" /ve /t REG_SZ /d "%KeyName%" /f >nul
  9. REG ADD "HKCR\%KeyName%\Shell\Copy_Ren" /ve /t REG_SZ /d "▓复制文件并改扩展名" /f >nul
  10. REG ADD "HKCR\%KeyName%\Shell\Copy_Ren\command" /ve /t REG_SZ /d "cmd /S/C \"FOR %%%%I IN (\"%%1\") DO COPY /Y \"%%%%~I\" \"%%%%~nI%NewExt%\"\"" /f >nul
  11. pause
复制代码
你测试后有什么问题再讨论!

TOP

回复 13# HeyJude


   请用管理员身份运行,看看是否还返回“错误:拒绝访问。”?

TOP

回复 15# HeyJude


    1. 如果系统没有刷新,右键菜单上不会出现【▓复制文件并改扩展名】,刷新系统即可;
    2. 如果注册表项“HKCR\.jpg”的默认值“jpegfile”被其他图像程序修改,重新运行“添加右键复制文件并改扩展名.bat”即可。
你试试看如何?

TOP

回复 17# HeyJude


    我刚测试12楼的没有问题。
你把原始代码中用命令”REG ADD“添加到注册表中的3条注册表项导出后打包上传,看看是什么问题?

TOP

回复 19# HeyJude

把我注册表中的对应3条注册表项完全删除,然后导入你上传的两个注册表文件,
经测试,正常;然后混淆大小写,经测试,同样正常。没有发现不正常。

可能还是权限不够的问题?因为直接运行批处理会产生”错误:拒绝访问。“的消息。
你用管理员身份登录系统,重新运行批处理试试看怎样?

TOP

回复 10# 老刘1号


注册表的COMMAND没开启命令拓展。。。

    感谢老刘1号指正,一行不经意的错误。
    怎样在注册表中开启命令拓展?尊请刘大侠传道授经!

TOP

本帖最后由 CommandBatCmd 于 2017-1-25 12:42 编辑

回复 23# HeyJude

使用替换法测试一下
    把上传压缩包中“2、3  Copy_Ren.reg”的第2条值手动替换到.txt 文件类型右键菜单的“打开”中,位置在:
  1. HKEY_CLASSES_ROOT\txtfile\shell\open\command
复制代码
先备份下以上注册表项,然后将默认值改为:
  1. cmd /S/C "FOR %%I IN ("%1") DO COPY /Y "%%~I" "%%~nI.png""
复制代码
刷新注册表后【右键--》打开】测试 *.txt 文件,看能不能执行复制并重命名?

补充说一下:以上注册表项在你的电脑中不一定是默认的,用其他可用文件类型的右键菜单测试一样,
如果以上测试成功,说明.jpg 文件类型的注册表项有些问题,使用系统的文件类型注册对话框重新注册一下.jpg。
系统的文件类型注册对话框:我的电脑-->菜单-->工具-->文件夹选项-->文件类型...

TOP

回复 27# HeyJude


手动替换:
  1. cmd /S/C "FOR %%I IN ("%1") DO COPY /Y "%%~I" "〖预先复制在剪贴板上的全新文件名〗.png""
复制代码
为:
  1. cmd /S/C "FOR %%I IN ("%1") DO @mshta vbscript:createobject("scripting.filesystemobject").getfile("%%~I").copy("%%~dpI"^&clipboardData.GetData("text")^&".png")(close)"
复制代码
1

评分人数

TOP

返回列表