我想比较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
答案 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.
答案 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