2 votos

Cómo comprobar si dos archivos son idénticos, dentro de una secuencia de comandos de shell de Windows?

Estoy escribiendo un script de shell usando el Windows NT(ish) lenguaje de secuencias de comandos de shell. (Mi equipo tiene Windows 10.) Quiero comprobar si dos archivos de texto son idénticos. Si los archivos son idénticos, quiero que mi script para hacer una cosa. Si los archivos no son idénticos, quiero que mi script para hacer algo más. El guión no debe pausa para preguntarnos para la entrada manual de datos.

Las "Preguntas Similares" lista tiene preguntas acerca de Macintosh y bash scripts de shell. También tiene una respuesta acerca de la ejecución fc o comp desde la línea de comandos, que proporcionan una salida detallada. Por desgracia, fc no devuelve un resultado a %errorlevel%y comp pide la entrada manual de datos en lugar de simplemente salir.

Tengo una copia de Tim Hill libro en Windows NT shell scripting. Página 216 tiene la siguiente línea de código, donde %D1% y %D2% son directorios, pero no sé cómo modificarlo para trabajar en solo un par de archivos:

for /f "tokens=*" %%I in ('fc /b %D1%\*.* %D2%\*.* ^| find /v "Comparing" ^| find /v "FC: no*"') do (set /a ERRORS+=1) & (echo %%I)

6voto

rahuldottech Puntos 76

Usted puede utilizar este código:

fc /b file1 file2 > nul
if errorlevel 1 goto files_differ
[files are the same, do something here]

:files_differ
[files are not the same, do something here]

Un errorlevel de 1 es devuelto si los archivos NO son idénticos.

Un errorlevel de 2 significa que uno de los archivos que faltan.

> nul se utiliza para ocultar la salida del comando

Alternativamente, usted puede usar Busybox para Windows y comprobar si el hash de archivo son los mismos.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: