Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Ветеран


Contributor


Сообщения: 2735
Благодарности: 1699

Профиль | Отправить PM | Цитировать


Цитата 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

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 27-02-2022 в 17:59.

Это сообщение посчитали полезным следующие участники:

Отправлено: 17:22, 25-02-2022 | #8