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

[其他] 求教cmd.exe /c 的使用

自己写了一个脚本代码如下:
  1. @echo off
  2. set /p kzm=请输入扩展名,不包含"." :  
  3. set file=%1
  4. ren %file% "%~n1.%kzm%"
复制代码
想把上面的代码加到注册表里弄成右键菜单,但是用cmd.exe /c +上面代码时无效,求大神解决

没有人吗?

TOP

试下 CMD /K

看帮助
/C 是执行后中断
/K 是执行后保留
如无特别说明,代码测试环境均为 XP SP3

TOP

回复 3# cutebe
现在的问题是用&&连接set /p kzm=请输入扩展名,不包含"." :  和set file=%1的话,直接就成一条命令了,变量kzm没有接收到输入的字符

TOP

可以做成外部文件阿,再在注册表中调用外部文件就好了。
如无特别说明,代码测试环境均为 XP SP3

TOP

实在要写进去就只好这样了,不太好看。
  1. REG ADD HKCR\*\shell\REN /VE /D "换扩展名(&R)" /F
  2. REG ADD HKCR\*\shell\REN\Command /VE /D "CMD /V:ON/Q/C\"SET/pKZM=请输入扩展名,不包含 \".\" :^&^&FOR /F \"DELIMS=\" %%%%E IN (\"%%1\")DO REN \"%%1\" \"%%%%~NE.!KZM!\"\"" /F
复制代码
如无特别说明,代码测试环境均为 XP SP3

TOP

回复 6# cutebe
效果出来了,非常感谢指导,但是有点不明白,那个for是干什么用的,望赐教

TOP

回复 6# cutebe
  1. CMD /V:ON /Q /C"set/p kzm=请输入扩展名,不包含 "." :&& ren "%1" "%~n1.!kzm!""
复制代码
这样写为什么出错,每次改完文件名都是“%~n1.”什么的

TOP

  1. setlocal ENABLEDELAYEDEXPANSION
  2. set/p kzm=请输入扩展名,不包含 "." :&& ren "%1" "%~n1.!kzm!"
复制代码
用bat文件就没错啊,烦死了

TOP

注册表中只认 %1
不认类似 %~n1、%~x1 等之类的扩展

加了FOR就是人为的将它扩展,因为可以用 %%~na 之类的
如无特别说明,代码测试环境均为 XP SP3

TOP

回复 10# cutebe

原来是这样的,非常感谢

TOP

返回列表