Цитата
megaloman:
%~n1.exe
CMD/BAT - Заменить расширение файла.
Удивительно, но это работает.
Цитата
YuS_2:
%~n1 - то же самое, но из параметра выделяется имя файла по последней точке в полном имени (если, конечно, расширение у него есть)
CMD/BAT - Заменить расширение файла.
Это самое трудное в cmd/bat, визуально ничего не напоминает, хотя регэкспы ещё труднее))
Но на этот раз кажется понял.
А вот на Fasm
Код:
Код: Выделить всё
include '%fasm%/win64ax.inc'
section '.code' executable
start:
sub rsp,8
invoke SHGetSpecialFolderPath,NULL,a,CSIDL_PROGRAM_FILES,NULL
invoke PathAddBackslash,a
invoke lstrcat,a,'Au3Info'
invoke PathAddBackslash,a
invoke lstrcat,a,'Aut2exe.exe'
invoke GetBinaryType,a,z
cmp eax,NULL
jz exit
invoke SHGetSpecialFolderPath,NULL,b,CSIDL_WINDOWS,NULL
invoke PathAddBackslash,b
invoke lstrcat,b,'exec.ico'
invoke GetCommandLine
mov ebx,eax
@@:
cmp byte [ebx],NULL
je sh
cmp byte [ebx],' '
je @f
inc ebx
jmp @r
@@:
inc ebx
cmp byte [ebx],' '
je @r
mov [i],ebx
invoke lstrcat,c,[i]
invoke PathRemoveExtension,[i]
invoke PathAddExtension,[i],'.exe'
invoke wsprintf,f,'/in %s /icon %s /nopack /ansi /x64 /gui /companyname "New" /filedescription "%s" /fileversion "1.0.0.0" /legalcopyright "(c)" /productname "%s" /productversion "1.0.0.0"',c,b,[i],[i]
sh:
invoke ShellExecute,NULL,NULL,a,f,NULL,SW_NORMAL
exit:
invoke ExitProcess,NULL
section '.data' readable writable
a rb MAX_PATH
b rb MAX_PATH
c rb MAX_PATH
f rb MAX_PATH
i dd MAX_PATH
z dd NULL
section '.idata' import readable
library kernel32,'KERNEL32.DLL',shell32,'SHELL32.DLL',shlwapi,'SHLWAPI.DLL',user32,'USER32.DLL'
include '%fasm%/api/kernel32.inc'
include '%fasm%/api/shell32.inc'
include '%fasm%/api/shlwapi.inc'
include '%fasm%/api/user32.inc'