求助一个批处理文件. 把一个目录下的所有文件包括子文件夹里的东西 复制到另一个制定的目录下.

如 : 把 c:\123\ 下的所有东西包括子文件夹中的 复制到 d:\666\ 下;(复制后的文件目录结构是一样的)
要求: 只能用 copy 复制, 不能用 xcopy!!!

不看题,乱黏贴的请绕行,谢谢合作.

第1个回答  2012-03-29
你好 按你的要求 我完成的代码如下~
@echo off
setlocal ENABLEDELAYEDEXPANSION
c: & cd\
for /f "delims=" %%j in ('dir "c:\123\" /w /b /ad /s') do (
set a=%%j
set a=!a:c:\123\=!
md d:\666\!a! 2>nul
)

for /f "delims=" %%i in ('dir "c:\123\" /w /b /a-d /s') do (
set a=%%i
set a=!a:c:\123\=!
copy "%%i" "d:\666\!a!" >nul 2>nul
)

希望我的回答对你有帮助 望采纳~追问

文件夹名带空格的复制后不全. 隐藏文件复制不到.

追答

@echo off
setlocal ENABLEDELAYEDEXPANSION
c: & cd\
for /f "delims=" %%j in ('dir "c:\123\" /w /b /ad /s') do (
set a=%%j
set a=!a:c:\123\=!
md "d:\666\!a!" 2>nul
)

for /f "delims=" %%i in ('dir "c:\123\" /w /b /a-d /s') do (
set a=%%i
set a=!a:c:\123\=!
copy "%%i" "d:\666\!a!" >nul 2>nul
)

for /f "delims=" %%i in ('dir "c:\123\" /w /b /ah-d /s') do (
attrib -h "%%i"
set a=%%i
set a=!a:c:\123\=!
copy "%%i" "d:\666\!a!" >nul 2>nul
attrib +h "%%i"
attrib +h "d:\666\!a!"
)

第2个回答  2012-03-29
不能用 xcopy,为什么?

——————————
@ECHO OFF & setLocal enableDelayedExpansion
rem 设置路径
set SRCD=C:\123\
set TAGD=D:\666\
md "%TAGD%" 2>nul
copy "%SRCD%"\* "%TAGD%"\
echo.
for /f "tokens=* usebackq" %%i in (`dir "%SRCD%" /ad /b /s`) do (
set "CWD=%%~i"
set "TGD=!CWD:%SRCD%=%TAGD%!"
md "!TGD!" 2>nul
copy "!CWD!"\* "!TGD!"
echo.
)
echo.完成。&pause>nul
——————————

其实 o0小绒0o 回答得比我快。追问

其他都ok哦.就是隐藏文件复制不到.

追答

那么你应该在问题里强调下有隐藏文件,因为隐藏文件不能用copy命令复制的。
如果非要那么做可以先用attrib -h去掉隐藏属性,拷贝完再加上。
这需要生成一个文件列表,做起来稍微麻烦点。

追问

没问题,这个我可以搞定它.先把隐藏文件先取消隐藏不就okla. 怎么遍历一下就是?

追答

用 dir /ah-d /b /s 找到所有的隐藏文件并保存到列表文件中。然后用 for 遍历一下这个列表文件,将所有文件的隐藏属性去掉。等复制完成后,遍历列表将隐藏属性加上,再用变量替换法将源目录转换成目标目录后对复件再进行一次隐藏属性的追加即可。

本回答被提问者采纳
第3个回答  2012-03-29
相似回答