将文件与CMD进行比较

时间:2015-10-14 12:47:59

标签: windows cmd compare batch-processing

我想比较2个文件(比较大小)和CMD-batchfile。如果文件不相等,我想启动一个复制操作,而不是从命令行开始,而是在批处理文件中。

我想抑制一个问题“比较更多文件?” 在Comp-command前面不是Echo N吗? 此外,我并不完全相信我的“> Nul”声明。

我试过了:

@echo off
:main
Echo n comp  g:\test.accdb g:\test21.accdb >nul
if errorlevel 1 goto different size
:next
echo Files are same size
pause
exit

:different size
copy g:\test.accdb g:\test21.accdb
pause
EXIT

2 个答案:

答案 0 :(得分:4)

FC File1.txt File2.txt >NUL && Echo Same || Echo Different or error
  

<强> Errorlevels

     

FC将按如下方式设置ErrorLevel:

-1 Invalid syntax (e.g. only one file passed)
0 The files are identical.
1 The files are different.
2 Cannot find at least one of the files.
For an invalid switch (with two passed files) an error message is 
printed but the errorlevel is not changed.

进一步阅读http://ss64.com/nt/fc.html

答案 1 :(得分:1)

从技术上讲,@ Paul的答案中提供的示例按预期执行,但是如果您打算使用比Echo命令更复杂的任何内容,则需要了解在将其用于您自己的情况之前发生了什么。 (我也会在对他的答案的评论中提到这一点,但我没有足够的声誉点。)

给出命令行:

Command1 && Command2 || Command3

如果Command1失败,则执行Command3。

如果Command1成功,则执行Command2。 ...如果Command2失败,那么Command3 也将执行。

下面演示了我将三个FIND命令链接在一起,这三个命令搜索包含大写字母关键字的文件,并相应地改变了搜索字符串的大小写。请注意,最后一个示例执行所有三个命令。

C:\Temp>find "select" test.txt && find "FROM" test.txt || find "WHERE" test.txt

---------- TEST.TXT

---------- TEST.TXT
WHERE            (

C:\Temp>find "SELECT" test.txt && find "FROM" test.txt || find "WHERE" test.txt

---------- TEST.TXT
SELECT           dbo.SalProductClass.ProductClass               ,

---------- TEST.TXT
FROM             dbo.SalProductClass

C:\Temp>find "SELECT" test.txt && find "from" test.txt || find "WHERE" test.txt

---------- TEST.TXT
SELECT           dbo.SalProductClass.ProductClass               ,

---------- TEST.TXT

---------- TEST.TXT
WHERE            (

C:\Temp>

那就是说,由于原始海报 想要一个Echo命令作为Command2,他的批处理文件可以按如下方式重写:

@echo off
:main
FC g:\test.accdb g:\test21.accdb >nul && echo Files are same size || goto different size
pause
exit

:different size
copy g:\test.accdb g:\test21.accdb
pause
EXIT