Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.09.2024, 22:26   #1
Faserty
Пользователь
 
Регистрация: 22.09.2023
Сообщений: 26
По умолчанию Вывести на экран все различия двух папок, имена которых передаются в качестве параметров (отличия искать в размерах, именах и атрибутах файлов)

Написал код, но при его вызове вообще ничего происходит

Вызов: 2-10.bat /compare "larg" "spol"

КОД

Код:
if "%~1"=="/compare" (
    if "%~2"=="" or "%~3"=="" (
        echo Please specify both folder paths to compare.
        exit /b
    )

    set "folder1=%~2"
    set "folder2=%~3"

    echo Comparing "%folder1%" and "%folder2%".
    fc /B "%folder1%\*" "%folder2%\*"
    exit /b
)
Faserty вне форума Ответить с цитированием
Старый 15.09.2024, 09:55   #2
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,674
По умолчанию

fc выводит различия между файлами, а не папками. Можно так попробовать:

Код:
robocopy "%folder1%" "%folder2%" /L /S /NJH /NJS /NDL /NS /NC /FP /BYTES /MINLAD /UNILOG+1

Последний раз редактировалось Arigato; 15.09.2024 в 10:02.
Arigato вне форума Ответить с цитированием
Старый 15.09.2024, 09:59   #3
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,339
По умолчанию

1. В командной строке нет логических операторов OR или AND. Они реализуются специфически. См. Сеть.

2. Для правильного повторного срабатывания скрипта необходимо принуждать скрипт к установке актуального значения некоторых переменных.
В нашем случае это переменная res, которую ввели для реализации логической операции OR. Обратите внимание на строку:
Код:
SETLOCAL ENABLEDELAYEDEXPANSION
и использование восклицательного знака вокруг переменной res.

3. В скрипте устанавливается кодовая страница для вывода сообщения на кириллице и используется символ ">", который направляет сообщение, поступающее от команды CHCP, в nul-драйвер.

Скрипт, реализующий вашу хотелку, может принять такой вид:
Код:
@echo off
chcp 65001 > nul
SETLOCAL ENABLEDELAYEDEXPANSION

if "%~1"=="/compare" (
    set res=true
    if not "%~2" NEQ "" if not "%~3" NEQ "" set res=false
    if "!res!"=="true" (
        echo Ok
    ) else (
        echo Пожалуйста, определите оба каталога для сравнения.
        exit /b
    )

    set folder1=%~2
    set folder2=%~3

    echo Сравниваем каталоги: "%folder1%" and "%folder2%".
    fc /B "%folder1%\*" "%folder2%\*"
    exit /b
)
PS: Познакомьтесь с драйверами устройств, установленными в Windows по умолчанию (почитайте в Сети).
Например, попробуйте создать файл с именем nul, com, prn, или с именем com1, com9, com11

PSS: После замечания от Arigato.
Для сравнения файлов в папках возможно потребуется цикл for
и модификаторы:
Код:
rem Сравнение размеров файлов %1 и %2
if -%~z1 NEQ -%~z2 ( ... ) 
...
rem Сравнение атрибутов файлов %1 и %2
if -%~a1 NEQ -%~a2 ( ... )
Как-то так, ...

Последний раз редактировалось ViktorR; 15.09.2024 в 10:19.
ViktorR вне форума Ответить с цитированием
Старый 18.09.2024, 21:32   #4
Нурсултан1
Новичок
Джуниор
 
Регистрация: 18.09.2024
Сообщений: 4
По умолчанию

@echo off
if "%~1"=="/compare" (
if "%~2"=="" or "%~3"=="" (
echo Please specify both folder paths to compare.
exit /b
)

set "folder1=%~2"
set "folder2=%~3"

REM Проверка существования папок
if not exist "%folder1%" (
echo Folder "%folder1%" does not exist.
exit /b
)

if not exist "%folder2%" (
echo Folder "%folder2%" does not exist.
exit /b
)

echo Comparing "%folder1%" and "%folder2%".
robocopy "%folder1%" "%folder2%" /L /NJH /NJS /NC /ND /NS /NF

exit /b
)
Нурсултан1 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
char и varchar - различия в размерах nickel-j Microsoft Office Access 3 03.06.2010 23:48
Что означает буква A в именах параметров? mutabor Общие вопросы Delphi 12 28.03.2010 11:12
Вывести имена файлов, находящихся в папке NSvirus PHP 2 14.10.2009 00:05
DOS команда для удаления всех файлов, имена которых содержат цифры Samopal Операционные системы общие вопросы 1 23.12.2008 21:12
Как вывести на экран имена файлов текущего каталога? (С++) Darw1n Помощь студентам 1 13.12.2008 11:10