求教一个复制文件批处理,谢谢.

张仁阳 2009-10-11 02:20:23
加精
求教一个复制文件批处理
c盘下面有 一个so文件夹,文件下面有二个文件夹,结构如下
so ---public
--client 此文件夹下面的"某一级中"有二个文件 一个是ClientUICheckRuleGetter.class 一个是 ClientUICheckRuleGetter.java
这二个文件是肯定在一起的.
或者位于client\nc\ClientUICheckRuleGetter.class 和 client\nc\ClientUICheckRuleGetter.java
或者位于client\nc\so\so187\ClientUICheckRuleGetter.class 和 client\nc\so\so187\ClientUICheckRuleGetter.java
现在需要通过一个批处理,
把这2个文件拷贝到 public下面,目录结构和原来在client下面的目录结构一样,同时删除原有的client下面的这二个文件
请高手帮助.
...全文
2399 72 打赏 收藏 转发到动态 举报
写回复
用AI写文章
72 条回复
切换为时间正序
请发表友善的回复…
发表回复
mrjinle 2010-01-22
  • 打赏
  • 举报
回复
都是高手,初来乍到,学习学习。
fengchangguo 2009-10-13
  • 打赏
  • 举报
回复
yuan5184 2009-10-13
  • 打赏
  • 举报
回复
这个不太明白
kaixuan_166 2009-10-13
  • 打赏
  • 举报
回复
路过!
Cyanapple_wen 2009-10-13
  • 打赏
  • 举报
回复
学习一下
yangtao870928 2009-10-13
  • 打赏
  • 举报
回复
学习了
JOOELEE 2009-10-13
  • 打赏
  • 举报
回复
厉害
张仁阳 2009-10-12
  • 打赏
  • 举报
回复
还有,这种写法不支持中文路径.
hjkto 2009-10-12
  • 打赏
  • 举报
回复
mark
kjdsre 2009-10-12
  • 打赏
  • 举报
回复
初学者。。溜溜
张仁阳 2009-10-12
  • 打赏
  • 举报
回复
上面不行呀,只能像14楼那样外调
只要把
set "p=%~dp1"
改成
set "p=%1\"
即可
最终

d:\test\test.bat:
BatchFile code@echo off & setlocal
set "p=%~dp1"
pushd "%p%"
for /f "delims=" %%a in ('dir /a-d /s /b client\ClientUICheckRuleGetter.class') do (
set "p2=%%~dpa"
goto next
)
:next
call set "p3=%%p2:%p%client=%p%public%%"
md "%p3%"
move "%p2%ClientUICheckRuleGetter.class" "%p3%"
move "%p2%ClientUICheckRuleGetter.java" "%p3%"
pause


d:\test\test.reg:
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\DeleteSVN]
@="Delete SVN Folders"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\DeleteSVN\command]
@="cmd.exe /c \"d:\\test\\test.bat %1\""
张仁阳 2009-10-12
  • 打赏
  • 举报
回复
在各位的帮助下,终于完美实现了我的效果,把我的结果总结一下.并解释一下.
最终的代码为
保存为rege.reg

Windows Registry Editor Version 5.00 --版本信息

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\MoveGetter] --右键菜单名
@="MoveGetter" --命令名

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\MoveGetter\command] --命令
@="cmd.exe /c \" --开始调用批处理命令
@echo off & setlocal --关闭显示,初始化本地变量
set "p=%1\" --给p设置值 ,这也是跟14楼不一样的地方,14楼原来是写成 set "p=%~dp1",也就是转成真实路径,其实这里是不用转的,如果转的话就丢失了本文件夹的文件名.如原来 %1 为 c:\so,如果调用set "p=%~dp1" 就变成了c:\ 了,这样的话直接选中本文件夹执行此命令是不正确的.pushd "%p%" --验证路径是否正确
for /f "delims=" %%a in ('dir /a-d /s /b ClientUICheckRuleGetter.class') do ( --开始在%p这个路径下面遍历文件,如果找到ClientUICheckRuleGetter.class文件,跳到:next,并把此文件包括路径记录到%p2中.
set "p2=%%~dpa"
goto next
)
:next
call set "p3=%%p2:%p%client=%p%public%%" --这句话我不太确定什么意思,但看意思是一个替换功能,就是把%p2值中的%p%client 替换成%p%public ,如 c:\so\client\ClientUICheckRuleGetter.class 替换成c:\so\public\ClientUICheckRuleGetter.class 然后赋值给%p3
md "%p3%" --此时的p3就是我要拷贝到的新文件夹的位置了,创建这个文件夹.
move "%p2%ClientUICheckRuleGetter.class" "%p3%" 开始移动 .class
move "%p2%ClientUICheckRuleGetter.java" "%p3%"开始移动 .java
elainte 2009-10-12
  • 打赏
  • 举报
回复
jf
rightyeah 2009-10-12
  • 打赏
  • 举报
回复
学习
张仁阳 2009-10-12
  • 打赏
  • 举报
回复
请问谁能解释一下
call set "p3=%%p2:%p%client=%p%public%%"
是什么意思?二个等号?
luokaijie 2009-10-12
  • 打赏
  • 举报
回复
jf
china_west 2009-10-12
  • 打赏
  • 举报
回复
ding
hugh_z 2009-10-12
  • 打赏
  • 举报
回复
关注中......
b10393422302 2009-10-12
  • 打赏
  • 举报
回复
一同学习
誰伴我闖荡 2009-10-12
  • 打赏
  • 举报
回复
顶~~~
加载更多回复(50)

6,849

社区成员

发帖
与我相关
我的任务
社区描述
Windows 2016/2012/2008/2003/2000/NT
社区管理员
  • Windows Server社区
  • qishine
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧