在Windows批处理编程中使用循环移动文件

时间:2011-07-20 11:31:44

标签: windows batch-file

我正在使用下面的代码传输文件,它显示文件的每次移动,1个文件移动,1个文件移动等等...但它没有显示在最后总计移动的文件数量?它正在为我的第一个代码工作甚至echo %%我被放置在下面放置的相同位置... plz help ...?

setlocal enabledelayedexpansion
if exist C:\Hi\*.pdf (goto COPYFILES) else (goto NOFILES)

:COPYFILES
for /f %%i in ('DIR /b C:\Hi\*_*.*') do (
    echo %%i
    set fn=%%i
    set fn=!fn:~11,8!
    move C:\Hi\%%i E:\!fn!\
)
echo complete

:NOFILES
echo There are no files to move

1 个答案:

答案 0 :(得分:1)

变量%%i只会包含文件名的部分,所以你试着

move C:\Hi\30072011.pdf 

而不是

move c:\hi\1000225013_30072011.pdf

替代:

setlocal enabledelayedexpansion
if exist C:\Hi\*.pdf (goto COPYFILES) else (goto NOFILES)

:COPYFILES
for /f %%i in ('DIR /b C:\Hi\*_*.*') do (
    echo %%i
    set fn=%%i
    set fn=!fn:~11,8!
    move C:\Hi\%%i E:\!fn!\
)
echo complete
goto:eof

:NOFILES
echo There are no files to move