|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] вставить две пустых строки в copy bin |
|
CMD/BAT - [решено] вставить две пустых строки в copy bin
|
Старожил Сообщения: 268 |
|
|
Отправлено: 16:30, 24-02-2022 |
Старожил Сообщения: 250
|
Профиль | Отправить PM | Цитировать перефразируете замысел!
|
Отправлено: 18:28, 24-02-2022 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 268
|
Профиль | Отправить PM | Цитировать как сделать бинарный объединятор bin1 + 0D0A0D0A + bin2 + 0D0A0D0A + ... bin100 + 0D0A0D0A ?
есть первый файл hex либо txt есть второй файл hex либо txt после запуска скрипта должен получиться hex txt а кодом из 1го сообщения получается так hex txt ![]() |
Последний раз редактировалось shadowbat, 24-02-2022 в 20:57. Отправлено: 18:56, 24-02-2022 | #3 |
Старожил Сообщения: 250
|
Профиль | Отправить PM | Цитировать создайте файл file0 c содержимым 0D0A0D0A любым доступным вам способом и задача сведется к
copy /b file1 file0 file2 file0 file3 file0 .... "! merged.bin" |
Отправлено: 03:09, 25-02-2022 | #4 |
Старожил Сообщения: 268
|
Профиль | Отправить PM | Цитировать Цитата Serguei Kouzmine:
chcp 1251 copy /b "11.txt.bin" + "Line.txt.bin" + "22.txt.bin" + "Line.txt.bin" + "33.txt.bin" + "Line.txt.bin" + "44.txt.bin" + "Line.txt.bin" "! merged.bin" pause например типа такого: (помесь vba и cmd) Set Source=%CD% Set Output=%CD% Set Line=C:\0D0A.txt for i = 1 to files.count copy /b "%Output%\! merged.bin" + "%Line%" + "%Source%\file(i)" to "%Output%\! merged.bin" next i for i = 1 to files.count if file(i) <> "! merged.bin" and file(i) <> "! 0D0A.bin" copy /b "! merged.bin" + "! 0D0A.bin" + "file(i)" to "! merged.bin" end if next i ну и не стоит забывать, что Dir имеет проблемы при составлении списка файлов т.е. не поддерживает unicode в имени файла хотя сейчас проверил, "●●●●.bin" клеится нормально. возможно список файлов в *.* формируется не через Dir() а через стороннюю функцию у которой нет проблем с не-православными именами файлов |
||
Последний раз редактировалось shadowbat, 25-02-2022 в 08:20. Отправлено: 06:14, 25-02-2022 | #5 |
Ветеран Сообщения: 2733
|
Профиль | Отправить PM | Цитировать @Echo Off cls >nul Chcp 1251 Set "BoxIn=Z:\Box_In" Set "Mask=bin*.bin" Set "FileOut=Z:\Box_Out\! 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%"`) DO >nul Copy /b "%%f" "%FileOut%" &GoTo :Begin :Begin FOR /F "usebackq Skip=1 delims=" %%f In (`2^>nul Where "%BoxIn%:%Mask%"`) DO ( (>>"%FileOut%" Echo.) (>>"%FileOut%" Echo.) >nul Copy /b "%FileOut%"+"%%f" "%FileOut%" ) Pause Exit /B |
------- Отправлено: 15:58, 25-02-2022 | #6 |
Старожил Сообщения: 268
|
Профиль | Отправить PM | Цитировать Цитата megaloman:
А как добавить исключение для добавления самого кода bat файла в результат? (копирую его в папку и запускаю из %CD%) Ниже код с ошибкой: @Echo Off cls >nul Chcp 1251 Set "BoxIn=%CD%" Set "Mask=*.*" Set "FileOut=%CD%\! 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%"`) DO (IF "%%f" neq "binbin.bat"(>nul Copy /b "%%f" "%FileOut%" &GoTo :Begin)) :Begin FOR /F "usebackq Skip=1 delims=" %%f In (`2^>nul Where "%BoxIn%:%Mask%"`) DO (IF "%%f" neq "binbin.bat" ( (>>"%FileOut%" Echo.) (>>"%FileOut%" Echo.) (Echo ------>>"%FileOut%") (>>"%FileOut%" Echo.) >nul Copy /b "%FileOut%"+"%%f" "%FileOut%" )) Pause Exit /B |
|
Отправлено: 16:21, 25-02-2022 | #7 |
Ветеран Сообщения: 2733
|
Профиль | Отправить PM | Цитировать Цитата shadowbat:
Я не понял, что Вы хотите.
Допустим, сейчас результат кода ! merged.bin. Что в этом Вас не устраивает? Если маской файла не удаётся отсечь батник и суммарный файл, то вот вариант с добавкой исключения из процесса батника и ! 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 |
Старожил Сообщения: 268
|
Профиль | Отправить PM | Цитировать Цитата megaloman:
Это быстрее, чем прописывать вручную пути каждый раз. В первом коде он естественно добавлял код этого батника в результат, что в принципе не критично. Что хочу - скопировать батник в папку, получить сумму всех бинарников, кроме этого батника Цитата megaloman:
Чуть изменил - с выводом имени файла + лог в консольку @Echo Off cls >nul Chcp 1251 Set "BoxIn=%~dp0" rem Set "BoxIn=Z:\Box_In" Set "Mask=*.*" 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 ( Echo %%~nxf Echo ---%%~nxf--->>"%FileOut%" >>"%FileOut%" Echo. >nul Copy /b "%FileOut%"+"%%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 ( Echo %%~nxf >>"%FileOut%" Echo. >>"%FileOut%" Echo. Echo ---%%~nxf--->>"%FileOut%" >>"%FileOut%" Echo. >nul Copy /b "%FileOut%"+"%%f" "%FileOut%" ) Pause Exit /B |
||
Последний раз редактировалось shadowbat, 25-02-2022 в 18:56. Отправлено: 18:13, 25-02-2022 | #9 |
Ветеран Сообщения: 2733
|
Профиль | Отправить PM | Цитировать В Вашем коде в первом случае в Copy "%%f" замените на "%FileOut%"+"%%f"
|
------- Отправлено: 18:43, 25-02-2022 | #10 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Любой язык - найти письмо с фамилией/именем в теле письма, copy строки в .docx шаблон и save | v79italya | Скриптовые языки администрирования Windows | 9 | 03-09-2019 06:13 | |
2013 - [решено] Как вставить разрыв страницы (или 10 пустых строк) в самый низ документа? | megagogo | Microsoft Office (Word, Excel, Outlook и т.д.) | 4 | 25-02-2015 13:32 | |
CMD/BAT - Как вставить пробелы в строки | vision-d | Скриптовые языки администрирования Windows | 17 | 21-03-2014 14:48 | |
CMD/BAT - [решено] Вставить после каждой 10 строки пустую строку | Mycry | Скриптовые языки администрирования Windows | 8 | 31-07-2013 00:05 | |
VBS/WSH/JS - [решено] Вставить строки в конце файла WORD | AlexVong | Скриптовые языки администрирования Windows | 1 | 27-07-2012 00:33 |
|