Board logo

标题: [文本处理] 两个bat文件合并为一个批处理,怎么合? [打印本页]

作者: 7016427    时间: 2015-9-5 08:17     标题: 两个bat文件合并为一个批处理,怎么合?

  1. @echo off
  2. echo.
  3. set "w=e:\移除.bat"
  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. if exist "%spath%\%y%\%m:~-2%\" (
  9. call %w%      
  10. ) else echo %y%年%m:~-2%已移除,退出!
  11. echo.  
  12. pause
复制代码
  1. @echo off&setlocal EnableDelayedExpansion
  2. chcp 437>nul&graftabl 936>nul
  3. echo hP1X500P[PZBBBfh#b##fXf-V@`$fPf]f3/f1/5++u5x>in.com
  4. echo.
  5. set /p pw=请输入密码: <nul
  6. for /f "tokens=*" %%i in ('in.com') do set pw=%%i
  7. del in.com
  8. if not "%pw%"=="jyzr" (
  9.     echo.
  10.     echo.
  11.     echo 密码错误^^!
  12.     pause>nul&exit
  13. )
  14. echo.
  15. echo.
  16. set "spath=e:\外勤"
  17. set "bakpath=d:\备份\外勤"
  18. set /a "y=%date:~,4%,m=1%date:~5,2%-2"
  19. if %m% lss 101 set /a y-=1,m+=12
  20. if exist "%spath%\%y%\%m:~-2%\" (
  21. rd /q /s %bakpath%&md %bakpath%
  22. echo.
  23. xcopy /e /y "%spath%\%y%\%m:~-2%\*.*" "%bakpath%\%y%\%m:~-2%\"
  24. echo.
  25. rd /q /s "%spath%\%y%\%m:~-2%\"
  26. )
  27. )
  28. echo.
  29. echo %y%年%m:~-2%月份,备份完毕!
  30. pause & exit /b
复制代码

作者: 路过    时间: 2015-9-5 12:08

单纯合并用COPY /B /Y 文件1+文件2 文件3
作者: 7016427    时间: 2015-9-5 12:31

回复 2# 路过
请问老师,怎么修改?
作者: DAIC    时间: 2015-9-5 12:38

把第二个代码的最后一行删掉
把第一个代码放到第二个代码最后
作者: 7016427    时间: 2015-9-5 12:54     标题: 【未解决】 两个bat文件合并为一个批处理,怎么合?

【未解决】回复 4# DAIC
老师好!我是先执行第一个代码来,判断文件目录是否存在?文件目录存在时,执行第二个代码,否则退出。按老师指点的测试,文件目录不存在时,仍然要执行执行第二个代码。
作者: DAIC    时间: 2015-9-5 12:56

回复 5# 7016427


    为啥顶楼不说清楚呢?
作者: DAIC    时间: 2015-9-5 12:59

以下所有代码保存为test.bat


@echo off
echo.
REM set "w=e:\移除.bat"
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%\" (
call :YiChu
) else echo %y%年%m:~-2%已移除,退出!
echo.
pause

:YiChu
@echo off&setlocal EnableDelayedExpansion
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
)
echo.
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%\" (
rd /q /s %bakpath%&md %bakpath%
echo.
xcopy /e /y "%spath%\%y%\%m:~-2%\*.*" "%bakpath%\%y%\%m:~-2%\"
echo.
rd /q /s "%spath%\%y%\%m:~-2%\"
)
)
echo.
echo %y%年%m:~-2%月份,备份完毕!
pause & exit /b
作者: 7016427    时间: 2015-9-5 13:35     标题: [未完全解决] 两个bat文件合并为一个批处理,怎么合?

[未完全解决]回复 7# DAIC
就是结束时,要按任一键几次,才关闭!能否帮我优化代码?
作者: 回家路上    时间: 2015-9-5 13:51

回复 8# 7016427


真服了,一个四级士官,发帖近两百,还都是这一年发的,结果丝毫批处理基础都没得。(⊙﹏⊙)b
作者: DAIC    时间: 2015-9-5 13:51

回复 8# 7016427


    把 pause 删掉
作者: 7016427    时间: 2015-9-5 20:47     标题: 【已经解决!】 两个bat文件合并为一个批处理,怎么合?

回复 10# DAIC
【已经解决!】回复 10# DAIC
@echo off
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 not exist "%spath%\%y%\%m:~-2%\" (echo %y%年%m:~-2%月,已备份!
echo.
pause>nul&exit
)
@echo off&setlocal EnableDelayedExpansion
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 密码错误 ^^!
pause>nul&exit
)
echo.
  ) else (
rd /q /s %bakpath%&md %bakpath%
xcopy /e /y "%spath%\%y%\%m:~-2%\*.*" "%bakpath%\%y%\%m:~-2%\"
echo.
rd /q /s "%spath%\%y%\%m:~-2%\"
  )
echo.
echo %y%年%m:~-2%月%,执行完毕^^!
echo.
pause&exit /b
作者: DAIC    时间: 2015-9-6 09:46

回复 11# 7016427


是谁给你出的主意让你每次回帖都写一遍未解决、已解决?
问题解决之后,编辑顶楼的帖子注明[已解决]就行了。




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