Board logo

标题: [其他] 求教cmd.exe /c 的使用 [打印本页]

作者: xinufo    时间: 2012-12-3 09:01     标题: 求教cmd.exe /c 的使用

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

没有人吗?
作者: cutebe    时间: 2012-12-3 14:46

试下 CMD /K

看帮助
/C 是执行后中断
/K 是执行后保留
作者: xinufo    时间: 2012-12-9 13:11

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

可以做成外部文件阿,再在注册表中调用外部文件就好了。
作者: cutebe    时间: 2012-12-9 14:25

实在要写进去就只好这样了,不太好看。
  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
复制代码

作者: xinufo    时间: 2012-12-9 14:54

回复 6# cutebe
效果出来了,非常感谢指导,但是有点不明白,那个for是干什么用的,望赐教
作者: xinufo    时间: 2012-12-9 15:34

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

  1. setlocal ENABLEDELAYEDEXPANSION
  2. set/p kzm=请输入扩展名,不包含 "." :&& ren "%1" "%~n1.!kzm!"
复制代码
用bat文件就没错啊,烦死了
作者: cutebe    时间: 2012-12-9 15:46

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

加了FOR就是人为的将它扩展,因为可以用 %%~na 之类的
作者: xinufo    时间: 2012-12-9 16:13

回复 10# cutebe

原来是这样的,非常感谢




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2