【发布时间】:2019-11-24 00:09:17
【问题描述】:
如果我犯了明显的错误,请原谅。
我一直在处理的批处理文件是准备一些文件夹(D:\Backups_pc 和子文件夹 Backup_Main 和 Backup_Copy)。取决于它们是否存在于 D: 驱动器上。
批处理文件第一次运行时会创建文件夹,然后将必要的文件夹和文件 Robocopy 到“Backup_Main”中。批处理文件在同一个 D 驱动器上执行的第二次和后续时间应该将 Backup_Main 复制到 Backup_Copy 并且 Robocopy 更新 Backup_Main。
它不这样做,但总是转到“KDTFirstRun”。
我已经尝试 IF EXIST D:\Backups_pc\Backup_Copy 来评估文件夹的存在,并且在这个版本中我尝试先检查所有内容并存储它,认为某些内容可能被缓冲或未正确评估所以尝试预设它(可以这么说)。它没有奏效,所以我很茫然。我在变量定义、数学或任何导致问题的东西中看不到空格,还是我失明了?
我们将不胜感激。谢谢你。 菲尔。
@ECHO off
SETLOCAL
:: Batchfile to do two types of backup
:: Attempt using variables defined here and set to ZERO
SET /A RootB=0
SET /A MainB=0
SET /A CopyB=0
:: Set the Variables based on folders being in place or not
IF EXIST "D:\Backups_pc\" SET /A RootB=1
IF EXIST "D:\Backups_pc\Backup_Main\" SET /A MainB=1
IF EXIST "D:\Backups_pc\Backup_Copy\" SET /A CopyB=1
:: Diagnostics Echo reports
ECHO R = %RootB%
ECHO M = %MainB%
ECHO C = %CopyB%
SET /A KDTCheck = %RootB% + %MainB% + %CopyB%
ECHO KDTCheck is %KDTCheck%
PAUSE
IF /I KDTCheck EQU 3 GOTO KDTUPdate
IF /I KDTCHeck EQU 2 GOTO KDTFolderError
IF /I KDTCheck EQU 1 GOTO KDTFolderError
IF /I KDTCheck EQU 0 GOTO KDTFirstRun
:KDTFirstRun
ECHO Initialising System and Preparing Backup_Copy.
:: Create the necessary folders, I know I could get smarter but lets get the IF stuff working first.
MD D:\Backups_pc
MD D:\Backups_pc\Backup_Main
MD D:\Backups_pc\Backup_Copy
ECHO Folders created on D Drive
ECHO Backing Up Backup_Main
:: Robocopy a lot of folders
ECHO Backup_Main has been updated with latest data from your computer.
GOTO KDTend
:KDTUpdate
ECHO Updating Backup_Copy.
:: Copy the Backup_Main to Backup_Copy
ECHO In KDTUPdateMain Updating Backup_Main
:: Re run the Robocopy stuff that was done in KDTFirstRun
ECHO Backup_Main has been updated with latest data from your computer.
GOTO KDTend
:KDTFolderError
:: Some limited diagnostics to view.
ECHO There is a problem with the Backup Folders on Drive D.
ECHO R = %RootB%
ECHO M = %MainB%
ECHO C = %CopyB%
ECHO KDTCheck is %KDTCheck%
:KDTend
ENDLOCAL
PAUSE
@ECHO ON
【问题讨论】:
-
衷心感谢 paxdiablo 提供的所有建议。它只是显示了一些在线“教程”如何误导您。这就是我从中获得 REM 的 :: 的地方。
标签: batch-file cmd