日期:2014-05-17  浏览次数:20795 次

求教一个复制文件批处理,谢谢.
求教一个复制文件批处理
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下面的这二个文件
请高手帮助.

------解决方案--------------------
问题:so文件夹是在c盘根目录下吗?client是在public文件夹下吗?看你打出来是。
应该用move,而不是copy,否则还要用到del的。
下面的这试过了,你应该看得懂吧。
@echo off
move C:\so\public\client\nc\so\so187\ClientUICheckRuleGetter.* c:\so\public\
move C:\so\public\client\nc\ClientUICheckRuleGetter.* c:\so\public\
echo 已完成
pause
------解决方案--------------------
上面的有问题,是迭代c:\so\,而不是c:\so\client,改成这样:

@echo off & setlocal
set p=c:\so\
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%
popd
pause
------解决方案--------------------
test.bat

BatchFile code
@echo off
for /r C:\so %%a in (ClientUICheckRuleGetter.class?) do (
  if /i "%%~nxa" equ "ClientUICheckRuleGetter.class" (
    set "SrcDir=%%~dpa"
    goto :next
  )
)
:next
call set "MakeDir=%%SrcDir:C:\so\client=C:\so\public%%"
md "%MakeDir%"
move "%SrcDir%ClientUICheckRuleGetter.class" "%MakeDir%"
move "%SrcDir%ClientUICheckRuleGetter.java" "%MakeDir%"