批处理怎样复制带有空格和隐藏的文件

来源:百度知道 编辑:UC知道 时间:2024/06/25 15:45:00
for /f %%i in ('dir c:\*.doc /s/b') do move "%%i" d:\wukgd
这个批处理是复制C盘下的DOC所有文件,但是我发现在复制过程中会有遗漏,就是有带空格命名的文件不会复制,如果要用这个语句进行剪切C盘下的所有DOC文件,且重复文件名的时候不提示,直接覆盖,还要能剪切隐藏的文件,请高手在指点一下小弟

你遗漏了带空格文件是因为,你没有用tokens提取完整文件名,还有,move不能移动隐藏文件,可以试试看下面的代码:

@echo off
for /f "tokens=* delims= " %%i in ('dir /s /b c:\*.doc') do (move /y "%%i" d:\wukgd\ 2>nul)
for /f "tokens=* delims= " %%o in ('dir /s /b /ah c:\*.doc') do (xcopy /y /h "%%o" d:\wukgd 2>nul &&del /ah /q /f "%%o" 2>nul)
pause

rem 非隐藏的
for /f "delims=" %%i in ('dir c:\*.doc /s/b') do move "%%i" d:\wukgd

rem 隐藏的
for /f "delims=" %%i in ('dir c:\*.doc /ah /s/b') do (
attrib -h "%%i"
move "%%i" d:\wukgd
attrib +h "d:\wukgd\%%~nxi"
)

楼上的师傅
能解释一下你最后一句是什么意思吗?
attrib +h "d:\wukgd\%%~nxi"
为什么%%i会变成%%~nxi