未能使用多个if语句

时间:2014-07-21 12:58:24

标签: batch-file

我正在尝试编写以下内容以将数据库复制到非现场服务器

IF EXIST "G:\Innova\Ziped\%file%" (

xcopy "G:\Innova\Ziped\%file%" "\\192.168.0.4\e$\Innovabackupdailly\"

) 

IF EXIST "G:\Innova\Ziped\%file2%" (

xcopy "G:\Innova\Ziped\%file2%" "\\192.168.0.4\e$\Innovabackupdailly\"

)

 IF EXIST "G:\Innova\Ziped\%file3%" (

xcopy "G:\Innova\Ziped\%file3%" "\\192.168.0.4\e$\Innovabackupdailly\"

)

  IF EXIST "G:\Innova\Ziped\%file4%" (

xcopy "G:\Innova\Ziped\%file4%" "\\192.168.0.4\e$\Innovabackupdailly\"

)

IF EXIST "G:\Innova\Ziped\%file5%" (

xcopy "G:\Innova\Ziped\%file5%" "\\192.168.0.4\e$\Innovabackupdailly\"

)

IF EXIST "G:\Innova\Ziped\%file6%" (

xcopy "G:\Innova\Ziped\%file6%" "\\192.168.0.4\e$\Innovabackupdailly\"

)

 IF EXIST "G:\Innova\Ziped\%file7%" (

xcopy "G:\Innova\Ziped\%file7%" "\\192.168.0.4\e$\Innovabackupdailly\"

)

当我运行代码时,如果出现错误,我会意外。但如果我成功运行,我就离开了。

4 个答案:

答案 0 :(得分:0)

根本不需要括号。只需将它们转换为单行语句:

IF EXIST "G:\Innova\Ziped\%file%" xcopy "G:\Innova\Ziped\%file%" "\\192.168.0.4\e$\Innovabackupdailly\"

IF EXIST "G:\Innova\Ziped\%file2%" xcopy "G:\Innova\Ziped\%file2%" "\\192.168.0.4\e$\Innovabackupdailly\"

等等。

答案 1 :(得分:0)

使用IF .. ELSE构建(包含示例)

,尝试如下所示
@echo off

set file="Data.csv"
set file2="Data2.csv"
set file3="Data3.csv"

IF EXIST "D:\SO_Test\%file%" (
echo %file%
) ELSE IF EXIST "D:\SO_Test\%file2%" (
echo %file2%
) ELSE "D:\SO_Test\%file3%" (
echo %file3%
)

答案 2 :(得分:0)

虽然所有文件都在同一目录中,但很多环境变量都引用了很多文件,应该将它们复制到同一目录中。

因此,为什么不复制所有设置了存档属性的文件并在复制后删除存档属性以避免在下次运行时再次复制此文件?

xcopy "G:\Innova\Ziped\*" "\\192.168.0.4\e$\Innovabackupdailly\" /C /H /I /K /M /Q /R /Y /Z

请参阅Microsoft文档

  • xcopy - Windows XP / 2000
  • xcopy - Windows Vista及更高版本

有关所有开关的说明。

答案 3 :(得分:0)

这就是我这样做的方式:

首先,我会在开头启用延迟扩展,并在名字中包含数字1:

setlocal EnableDelayedExpansion

. . .

set "file1=FirstName.zip"

然后,我将通过for /L命令复制所有文件:

for /L %%i in (1,1,7) do (
   IF EXIST "G:\Innova\Ziped\!file%%i!" (
      xcopy "G:\Innova\Ziped\!file%%i!" "\\192.168.0.4\e$\Innovabackupdailly\"
   )
)