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

[文件操作] 批处理如何获取当前选中的文件名?

是这样的:我把一个批处理,通过修改注册表的方式加入到了JPG文件的右键菜单中,我想右键某个或选中多个jpg文件的时候执行我加入的批处理菜单。但如何获取所选中文件的名称,好让批处理针对这些文件进行操作。
我想问的是如何获取选中的文件名,而不是如何执行我的批处理,因为这个我知道
还望高手赐教

注册表值后面加上 %1
然后在你的批处理中用%1获取到文件名

TOP

楼上说在注册表命令中加上%1但 我想知道的是如何获取文件名
比如:把一个批处理加入jpg右键菜单 名称为 所选文件名 当选中一个或多个jpg文件右键时打开此命令 则显示出所选的文件的文件名

TOP

并且楼上所说并不有效,如果哪位高手解决我的困惑 定当送上薄礼一份

TOP

%1 不就是文件名吗
能否发出你的bat和注册表信息

TOP

新年红包 马云 扫头像
  1. @echo off
  2. :loop
  3. if "%~1" neq "" (
  4. for %%a in ("%~1") do echo %%~nxa
  5. shift
  6. goto :loop
  7. )
  8. pause
复制代码
把你需要的文件名全拖到批上,一个或多个。
QQ: 己阵亡
脚本优先 [PowerShell win10]

TOP

看来如果不把要求说全没人理解我的意思了,注册表如下:
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\SystemFileAssociations\image\shell\清除痕迹]

[HKEY_CLASSES_ROOT\SystemFileAssociations\image\shell\清除痕迹\Command]
@="C:\\WINDOWS\\Exifdel.bat"

批处理内容如下:
@echo off
Setlocal EnableDelayedExpansion
for /f "tokens=*" %%i in ('dir /b *.jpg 2^>nul') do (
Jhead -purejpg "%%i"
)
目前的批处理会处理当前目录所有jpg 我要的就是处理选中的jpg
注:Jhead 是第三方命令 用于处理jpg的eixf信息的(这不重要,重要的是如何获取右键时所选的jpg文件名)

TOP

注册表:
  1. Windows Registry Editor Version 5.00
  2. [HKEY_CLASSES_ROOT\SystemFileAssociations\image\shell\清除痕迹]
  3. [HKEY_CLASSES_ROOT\SystemFileAssociations\image\shell\清除痕迹\Command]
  4. @="C:\\WINDOWS\\Exifdel.bat %1"
复制代码
批处理:
  1. @echo off
  2. echo Jhead -purejpg "%1"
  3. pause
复制代码

TOP

回复 8# went


  试过了行不通啊哥们

TOP

回复 8# went


    你不如直接批处理内容显示所选的文件名列出来

TOP

回复 10# winload


    没取到文件名吗,截个图看看

TOP

  1. t.bat内容如下:
  2. @echo off
  3. echo %~nx1
  4. pause
复制代码
  1. 注册表项修改为 e:\t.bat "%1"
复制代码

TOP

12楼完美解决问题!感谢,感谢!头像弄二维码给你发个小红包

TOP

返回列表