如 : 把 c:\123\ 下的所有东西包括子文件夹中的 复制到 d:\666\ 下;(复制后的文件目录结构是一样的)
要求: 只能用 copy 复制, 不能用 xcopy!!!
不看题,乱黏贴的请绕行,谢谢合作.
文件夹名带空格的复制后不全. 隐藏文件复制不到.
追答@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!"
)
其他都ok哦.就是隐藏文件复制不到.
追答那么你应该在问题里强调下有隐藏文件,因为隐藏文件不能用copy命令复制的。
如果非要那么做可以先用attrib -h去掉隐藏属性,拷贝完再加上。
这需要生成一个文件列表,做起来稍微麻烦点。
没问题,这个我可以搞定它.先把隐藏文件先取消隐藏不就okla. 怎么遍历一下就是?
追答用 dir /ah-d /b /s 找到所有的隐藏文件并保存到列表文件中。然后用 for 遍历一下这个列表文件,将所有文件的隐藏属性去掉。等复制完成后,遍历列表将隐藏属性加上,再用变量替换法将源目录转换成目标目录后对复件再进行一次隐藏属性的追加即可。
本回答被提问者采纳