Цитата shadowbat:
А как добавить исключение для добавления самого кода bat файла в результат? »
|
Я не понял, что Вы хотите.
Допустим, сейчас результат кода ! merged.bin. Что в этом Вас не устраивает?
Код:

111
1111
11
222
2222
22
333
3333
33
Если маской файла не удаётся отсечь батник и суммарный файл, то вот вариант с добавкой исключения из процесса батника и ! merged.bin
Код:

@Echo Off
cls
>nul Chcp 1251
Set "BoxIn=%~dp0"
rem Set "BoxIn=Z:\Box_In"
Set "Mask=bin*.bin"
If "%BoxIn:~-1%"=="\" Set "BoxIn=%BoxIn:~0,-1%"
rem Set "FileOut=Z:\Box_Out\! merged.bin"
Set "FileOut=%BoxIn%\! merged.bin"
If Not Exist "%BoxIn%\%Mask%" (Echo Files "%BoxIn%\%Mask%" not found &Pause &Exit /B)
FOR /F "usebackq delims=" %%f In (`2^>nul Where "%BoxIn%:%Mask%" ^|Find /I /V "%FileOut%" ^|Find /I /V "%~dpnx0"`) DO >nul Copy /b "%%f" "%FileOut%" &GoTo :Begin
:Begin
FOR /F "usebackq Skip=1 delims=" %%f In (`2^>nul Where "%BoxIn%:%Mask%" ^|Find /I /V "%FileOut%" ^|Find /I /V "%~dpnx0"`) DO (
(>>"%FileOut%" Echo.)
(>>"%FileOut%" Echo.)
>nul Copy /b "%FileOut%"+"%%f" "%FileOut%"
)
Pause
Exit /B
Лучше не копировать батник в обрабатываемую папку.
Создайте его в каком-либо месте и на рабочем столе создайте только ярлык на него.
В проводнике выбирайте нужную для обработки папку и мышкой затаскивайте его на этот ярлык.
Вариант для такой работы.
Код:

@Echo Off
cls
>nul Chcp 1251
If "%1"=="" (Echo Bat File "%~dpnx0" mast run with argument: folder path. Press any key. &>nul Pause &Exit /B)
Set "BoxIn=%1"
Set "Mask=bin*.bin"
rem Set "Mask=*.*"
If "%BoxIn:~-1%"=="\" Set "BoxIn=%BoxIn:~0,-1%"
Set "FileOut=%BoxIn%\! merged.bin"
If Not Exist "%BoxIn%\%Mask%" (Echo Files "%BoxIn%\%Mask%" not found &Pause &Exit /B)
FOR /F "usebackq delims=" %%f In (`2^>nul Where "%BoxIn%:%Mask%" ^|Find /I /V "%FileOut%" ^|Find /I /V "%~nx0"`) DO >nul Copy /b "%%f" "%FileOut%" &GoTo :Begin
:Begin
FOR /F "usebackq Skip=1 delims=" %%f In (`2^>nul Where "%BoxIn%:%Mask%" ^|Find /I /V "%FileOut%" ^|Find /I /V "%~nx0"`) DO (
(>>"%FileOut%" Echo.)
(>>"%FileOut%" Echo.)
>nul Copy /b "%FileOut%"+"%%f" "%FileOut%"
)
Echo Press any key. &>nul Pause
Exit /B