Board logo

标题: [文本处理] 批处理复制文件为何提示:找不到文件? [打印本页]

作者: 7016427    时间: 2015-9-2 21:20     标题: 批处理复制文件为何提示:找不到文件?

各位老师好!以下代码始终执行时,提示:找不到文件 — *.* ,复制了0个文件。 2015年07月份,执行完毕!
  1. @echo off
  2. set /a "y=%date:~,4%,m=1%date:~5,2%-2"
  3. if %m% lss 101 set /a y-=1,m+=12
  4. xcopy /y "e:\外勤\%y%\%m:~-2%\*.*" d:\
  5. echo %y%年%m:~-2%月份%,执行完毕!
  6. pause
复制代码
平时创建目录是执行的如下批处理文件,是否错误与此有关?
  1. @echo off
  2. set /p d="创建日期目录: (注意日期格式:2015-05-01)"
  3. md e:\外勤\%d%
  4. pause
复制代码
我是在w7系统上运行!
作者: 回家路上    时间: 2015-9-2 21:52

我猜   e:\外勤\2015\07\   下没文件
要么只有目录,要么什么都没有
作者: 7016427    时间: 2015-9-2 22:11     标题: 【说明】 期待高手帮我解决,这个难题

回复 2# 回家路上
说明:你好!在w7系统上,那个创建目录代码,如2015年07月05日创建的目录显示为e盘“外勤”下显示:2015、07、05,三个文件夹!
我的文件全部放在号数文件夹下的(05文件夹下),每天的文件都有几个,所以按号数文件夹存放文件。
作者: 回家路上    时间: 2015-9-2 22:27

回复 3# 7016427


所以这个就应该说清楚。xcopy加上/e参数
  1. xcopy /y /e "e:\外勤\%y%\%m:~-2%\*.*" d:\
复制代码

作者: 7016427    时间: 2015-9-3 16:20     标题: 【未解决】 批处理复制文件为何提示:找不到文件?

【未解决】回复 4# 回家路上
xcopy /y /e "e:\外勤\%y%\%m:~-2%\*.*" d:\
win7系统上执行时,仍然错误提示:系统找不到指定文件。最后显示已了38个文件。请问老师怎么解决!
作者: 回家路上    时间: 2015-9-3 18:14

回复 5# 7016427


那我再猜,你的代码不止这些
  1. @echo off
  2. set /a "y=%date:~,4%,m=1%date:~5,2%-2"
  3. if %m% lss 101 set /a y-=1,m+=12
  4. xcopy /e /y "e:\外勤\%y%\%m:~-2%\*.*" d:\
  5. echo %y%年%m:~-2%月份%,执行完毕!
  6. pause
复制代码
这个代码不至于又错又对
作者: 7016427    时间: 2015-9-3 21:56     标题: [请高手解决]批处理复制文件为何提示:找不到文件?

[请高手解决]回复 6# 回家路上
我的完整代码如下,执行时提示:系统找不到指定文件,显示复制文件路径和文件名,最后显示已复制38个文件。目录不是空的。2015年07月份,执行完毕!
@echo off
set /a "y=%date:~,4%,m=1%date:~5,2%-2"
if %m% lss 101 set /a y-=1,m+=12
del d:\备份\*.* /q
xcopy /e /y "e:\外勤\%y%\%m:~-2%\*.*" d:\备份\
del "e:\外勤\%y%\%m:~-2%\*.*" /q
rd "e:\外勤\%y%\%m:~-2%
echo %y%年%m:~-2%月份%,执行完毕!
pause
作者: 7016427    时间: 2015-9-3 22:06     标题: 【补充】 批处理复制文件为何提示:找不到文件?

回复 7# 7016427
说明:执行时,复制文件正确,就是未删除指定文件和指定目录!
作者: 回家路上    时间: 2015-9-3 22:25

回复 8# 7016427


下次说的话可以说的更全面点,节省时间
  1. @echo off
  2. set "spath=e:\外勤"
  3. set "bakpath=d:\备份"
  4. set /a "y=%date:~,4%,m=1%date:~5,2%-2"
  5. if %m% lss 101 set /a y-=1,m+=12
  6. rd /q /s %bakpath%&md %bakpath%
  7. xcopy /e /y "%spath%\%y%\%m:~-2%\*.*" "%bakpath%"
  8. rd /q /s "%spath%\%y%\%m:~-2%\"
  9. echo %y%年%m:~-2%月份,备份完毕!
  10. pause & exit /b
复制代码

作者: 7016427    时间: 2015-9-3 22:42

回复 9# 回家路上

谢谢!我明天在w7电脑上试!
作者: 7016427    时间: 2015-9-4 14:02     标题: 【继续请教】 批处理复制文件为何提示:找不到文件?

回复 9# 回家路上
你好!我想再加个判断条件:也就是“%spath%\%y%\%m:~-2%”这个目录不存在就退出,怎样修改?谢谢其他要的。
作者: 回家路上    时间: 2015-9-4 17:05

回复 11# 7016427


你在论坛一年多了,发了这么多贴,怎么这if都不会。。。。。
  1. if exist "%spath%\%y%\%m:~-2%\" (
  2.         xcopy /e /y "%spath%\%y%\%m:~-2%\*.*" "%bakpath%"
  3.         rd /q /s "%spath%\%y%\%m:~-2%\"
  4.         echo %y%年%m:~-2%月份,备份完毕!
  5. ) else echo;%spath%\%y%\%m:~-2%\不存在,程序退出。
复制代码

作者: 7016427    时间: 2015-9-4 20:43     标题: 【请教老师】 批处理复制文件为何提示:找不到文件?

【请教老师】回复 12# 回家路上
请教各位老师,以下代码执行时,我密码输入正确,仍无法执行,还是提示:对不起,您密码输入错误!
@echo off&setlocal EnableDelayedExpansion
echo.
set "spath=e:\外勤"
set "bakpath=d:\备份\外勤"
set /a "y=%date:~,4%,m=1%date:~5,2%-2"
if %m% lss 101 set /a y-=1,m+=12
if exist "%spath%\%y%\%m:~-2%\" (
chcp 437>nul&graftabl 936>nul
echo hP1X500P[PZBBBfh#b##fXf-V@`$fPf]f3/f1/5++u5x>in.com
echo.
set /p pw=请输入密码: <nul
for /f "tokens=*" %%i in ('in.com') do set pw=%%i
del in.com
if not "%pw%"=="jyzr" (
    echo.
    echo.
    echo 对不起,您密码输入错误^^!
    pause>nul&exit
)
rd /q /s %bakpath%&md %bakpath%
xcopy /e /y "%spath%\%y%\%m:~-2%\*.*" "%bakpath%\%y%\%m:~-2%\"
rd /q /s "%spath%\%y%\%m:~-2%\"
echo.
echo %y%年%m:~-2%月份,备份完毕!
  )
) else (

echo %y%年%m:~-2%月已备份!
echo.
pause
作者: 回家路上    时间: 2015-9-4 21:26

回复 13# 7016427


建议先弄清楚这段代码的每一行的意思和作用,比对一下自己的需求和逻辑是否一致。
先把你代码格式一下,对齐一下,你先检错。
  1. @echo off&setlocal EnableDelayedExpansion
  2. echo.
  3. ::---------------
  4. set "spath=e:\外勤"
  5. set "bakpath=d:\备份\外勤"
  6. set /a "y=%date:~,4%,m=1%date:~5,2%-2"
  7. if %m% lss 101 set /a y-=1,m+=12
  8. ::---------------
  9. if exist "%spath%\%y%\%m:~-2%\" (
  10. rem ---------------------
  11. chcp 437>nul&graftabl 936>nul
  12. echo hP1X500P[PZBBBfh#b##fXf-V@`$fPf]f3/f1/5++u5x>in.com
  13. echo.
  14. set /p pw=请输入密码: <nul
  15. for /f "tokens=*" %%i in ('in.com') do set pw=%%i
  16. del in.com
  17. rem ---------------------
  18. if not "%pw%"=="jyzr" (
  19. echo.
  20. echo.
  21. echo 对不起,您密码输入错误^^!
  22. pause>nul&exit
  23. )
  24. rem ---------------------
  25. rd /q /s %bakpath%&md %bakpath%
  26. xcopy /e /y "%spath%\%y%\%m:~-2%\*.*" "%bakpath%\%y%\%m:~-2%\"
  27. rd /q /s "%spath%\%y%\%m:~-2%\"
  28. echo.
  29. echo %y%年%m:~-2%月份,备份完毕!
  30. )
  31. ) else (
  32. :: ↑↑↑↑↑↑↑上面这。。。
  33. echo %y%年%m:~-2%月已备份!
  34. echo.
  35. pause
复制代码

作者: 7016427    时间: 2015-9-4 21:50

回复 14# 回家路上
@echo off&setlocal EnableDelayedExpansion
echo.

set "spath=e:\外勤"
set "bakpath=d:\备份\外勤"
set /a "y=%date:~,4%,m=1%date:~5,2%-2"
if %m% lss 101 set /a y-=1,m+=12

if exist "%spath%\%y%\%m:~-2%\" (
        rem  e:\外勤\%y%\%m:~-2%文件目录存在执行以下步骤
        chcp 437>nul&graftabl 936>nul
        echo hP1X500P[PZBBBfh#b##fXf-V@`$fPf]f3/f1/5++u5x>in.com
        echo.
        set /p pw=请输入密码: <nul
        for /f "tokens=*" %%i in ('in.com') do set pw=%%i
        del in.com
        rem 输入密码正确时,继续执行
        if not "%pw%"=="jyzr" (
                echo.
                echo.
                echo 对不起,您密码输入错误^^!
                pause>nul&exit
        )
        rem 隐藏输入密码,输入错误退出
        rd /q /s %bakpath%&md %bakpath%
        xcopy /e /y "%spath%\%y%\%m:~-2%\*.*" "%bakpath%\%y%\%m:~-2%\"
        rd /q /s "%spath%\%y%\%m:~-2%\"
        echo.
        echo %y%年%m:~-2%月份,备份完毕!
)
) else (
:: e:\外勤\%y%\%m:~-2%文件目录不存在时,提示退出

echo %y%年%m:~-2%月已备份!
echo.
pause




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2