А сам не понимаешь? Что с тобой не так? Ты смотришь на код и не можешь проследить ход его работы? Объясняю:
1 call :testname передает управление на метку :testname
2 исполняется код до goto :eof
3 goto :eof приводит к выходу из кода, вместо выхода из процедуры
4 последние три инструкции кода не исполняются из-за пункта 3
5 код закончил исполнение - окно с командной строкой закрывается
6 Drovosek01 хлопает глазами и не понимает.
@echo off
set "path_bin_1=d:\TEMP\test.exe"
call :testname
pause
exit
REM тело функции располагаем в конце после оператора exit чтобы предотвратить выполнение в потоке.
:testname
echo "%path_bin_1%"
for /F "delims=" %%a in ("%path_bin_1%") do (
set file=%%~fa
set filepath=%%~dpa
set filename=%%~nxa
)
exit /B
echo "%path_bin_1%"
echo "%filename%"
pause
[byte[]]$bInput = Get-Content D:\TEMP\test.exe -Encoding Byte -Raw
$bOriginal = [Byte[]](0x48, 0x83, 0xEC, 0x28, 0x48, 0x8D, 0x0D, 0xE5)
$bSubstitute = [Byte[]](0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88)
$bOutput = [Byte[]]("$bInput" -Replace "\b$bOriginal\b", "$bSubstitute" -Split '\s+')
Set-Content "D:\TEMP\test22.exe" -Encoding Byte -Value $bOutput
Да. Но использование для этой цели массивов оболочки выглядит странно и расточительно. В shell канонично считать строки командой wc -l
% find . -maxdepth 1 | wc -l
83
Можно пример?