使用combine的简单批处理命令...无法使其工作

时间:2013-11-27 16:38:11

标签: windows batch-file

我正在尝试创建一个批处理命令,它将2个文件与以下逻辑组合在一起:

如果文件A存在且文件B存在,则创建文件C,然后删除文件A和文件B. 如果文件A存在,但文件B不存在,则不执行任何操作。 如果文件B存在,但文件A不存在,则不执行任何操作。

我有以下代码,它大部分都有效,除了当我运行它并且文件A存在,但文件B不存在时,它仍然使用文件A来创建文件C.

免责声明:我根本不是程序员,对我来说它主要是希腊人。我的老板要我创建这个脚本。

我做错了什么?

IF EXIST C:\Users\matthew jones\Documents\FileA.txt (
IF EXIST C:\Users\matthew jones\Documents\FileB.txt ( 
COPY FileA.txt+FileB.txt FileC.txt 

DEL FileA.txt
DEL FileB.txt

)
)   

2 个答案:

答案 0 :(得分:1)

您需要引用文件名,因为它们的路径包含空格。更改到包含文件的目录或者每次使用它们时完全限定它们也要好得多。最简单的方法就是更改目录。

rem Remember the folder you start in
pushd
cd "C:\Users\matthew jones\Documents"

IF EXIST FileA.txt (
  IF EXIST FileB.txt ( 
    COPY FileA.txt+FileB.txt FileC.txt 

    DEL FileA.txt
    DEL FileB.txt

  )
) 
rem Change back to where you were before
popd

更难的方式:

IF EXIST "C:\Users\matthew jones\Documents\FileA.txt" (
  IF EXIST "C:\Users\matthew jones\Documents\FileB.txt" ( 
    COPY "C:\Users\matthew jones\Documents\FileA.txt"+"C:\Users\matthew jones\Documents\FileB.txt" "C:\Users\matthew jones\Documents\FileC.txt"

    DEL "C:\Users\matthew jones\Documents\FileA.txt"
    DEL "C:\Users\matthew jones\Documents\FileB.txt"
  )
)  

答案 1 :(得分:0)

这是另一种选择。

pushd "C:\Users\matthew jones\Documents\"
IF EXIST "FileA.txt" IF EXIST "FileB.txt" ( 
   COPY "FileA.txt"+"FileB.txt" "FileC.txt"
   DEL "FileA.txt"
   DEL "FileB.txt"
)   
popd