使用if语句移动和备份文件

时间:2013-03-04 19:51:51

标签: batch-file

for %%d in (text.txt, test1.txt)
    if c:\desktop\deploy_pkg\bin\%%d exist (
        del C:\jboss-5.1.0.GA\bin\text.txt.bak
        del C:\jboss-5.1.0.GA\bin\text1.txt.bak
        ren C:\jboss-5.1.0.GA\bin\text.txt text.txt.bak
        ren C:\jboss-5.1.0.GA\bin\text.txt text1.txt.bak
        copy "C:\Documents and Settings\deployment\Desktop\deploy_pkg\bin\text.txt" "C:\jboss-5.1.0.GA\bin"
        copy "C:\Documents and Settings\deployment\Desktop\deploy_pkg\bin\text1.txt" "C:\jboss-5.1.0.GA\bin"
     )
 )
pause

这不起作用......有什么建议吗?

1 个答案:

答案 0 :(得分:0)

答案

正如原始问题的评论中所述,您的脚本存在两个语法错误。

  1. 括号数不匹配。每次关闭都需要开放,反之亦然。
  2. if命令的顺序不正确。 exists必须走在前面。
  3. 现在这些只会解决脚本崩溃问题,并且不会修复脚本逻辑中可能存在的任何错误。在不知道脚本要执行的逻辑的情况下,无法检查它。

    请参阅if /?寻求帮助。

    另外,Nate Hekman在Stack Overflow上提出了一些很好的建议。

    批次新手

    以下是从批处理脚本开始的一些很好的资源。

    SS64Rob VanderWouldeDosTipsTechnet

    语法修复

    for %%D in (text.txt, test1.txt) (
        if exist "c:\desktop\deploy_pkg\bin\%%~nxD" (
            del "C:\jboss-5.1.0.GA\bin\text.txt.bak"
            del "C:\jboss-5.1.0.GA\bin\text1.txt.bak"
            ren "C:\jboss-5.1.0.GA\bin\text.txt" "text.txt.bak"
            ren "C:\jboss-5.1.0.GA\bin\text.txt" "text1.txt.bak"
            copy "C:\Documents and Settings\deployment\Desktop\deploy_pkg\bin\text.txt" "C:\jboss-5.1.0.GA\bin"
            copy "C:\Documents and Settings\deployment\Desktop\deploy_pkg\bin\text1.txt" "C:\jboss-5.1.0.GA\bin"
        )
    )
    pause