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

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

Ветеран


Contributor


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

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


dixxia, Я еще оттестировал батник, убедился, что он работает. Но предполагается, что файлы текстовые. С бинарным файлом штатными утилитами вряд ли возможно. На всякий случай добавил в батник контроль наличия файлов.
Код: Выделить весь код
@Echo Off
cls
	Set "File1=1.txt"
	Set "FileOut=2.txt"
	Set "FileRep=out.dat"
	Set "Rep=Samp123"

	If Not Exist "%File1%" (Echo File not found "%File1%" &Pause &Exit /B 2)
	>"%FileOut%" cd. || (Echo "%FileOut%" &Pause &Exit /B 2)
	If Not Exist "%FileRep%" (Echo File not found "%FileRep%" &Pause &Exit /B 2)

	Set /A N=0
	For /f "usebackq Skip=2 tokens=1* delims=[]" %%i In (`2^>nul Find.exe /V /N "" "%File1%"`) Do Call Set R=%%Random%% &If Not "%%j"=="" Set /A N=%%i

	Set /A R=%N%*%Random%/32768
	For /f "usebackq delims=" %%i In (`2^>nul More +%R% "%File1%"`) Do (
		Set "RR=%%i"
		>"%FileOut%" (Echo %%i)
		GoTo :Cont
	)
	:Cont

	FOR /F "usebackq skip=2 tokens=1* delims=[]" %%i In (`2^>nul Find /V /N "" "%FileRep%"`) DO (
		Set Str=.%%j
		Set /A Num=100000000+%%i
		Call Set "@3@%%Num%%=%%Str:%Rep%=%RR%%%"
	)

	Set /A Num-=100000000
	Echo This file contains %Num% lines: "%FileRep%"

	>"%FileRep%" (FOR /F "usebackq tokens=2 delims==" %%i In (`2^>nul Set "@3@"`) DO Echo%%i)
Pause
Exit /B

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

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

Отправлено: 23:59, 09-04-2022 | #5