CMD/BAT - Заменить расширение файла.

Ответить
Аватара пользователя
semiono

CMD/BAT - Заменить расширение файла.

Сообщение semiono »

Код:

Код: Выделить всё

%ProgramFiles%\Au3Info\Aut2Exe.exe /in "%1" /icon %WinDir%\exec.ico /nopack /ansi /x64 /gui  /companyname "Microsoft" /filedescription "%1" /fileversion "1.0.0.0" /legalcopyright "All Rights" /productname "%1" /productversion "1.0.0.0"

А нельзя простым способом заменить расширение файла в двух %1, втором и третьем. Чтобы первый вызов был обычным test.au3, а далее test.exe и test.exe?
Аватара пользователя
Serguei Kouzmine

Re: CMD/BAT - Заменить расширение файла.

Сообщение Serguei Kouzmine »

попробуйте выразиться яснее
Аватара пользователя
Serguei Kouzmine

Re: CMD/BAT - Заменить расширение файла.

Сообщение Serguei Kouzmine »

Если %1 это test.au3

то %~n1.exe это test.exe
Аватара пользователя
YuS_2

Re: CMD/BAT - Заменить расширение файла.

Сообщение YuS_2 »

Цитата megaloman:



Если %1 это test.au3

то %~n1.exe это test.exe
CMD/BAT - Заменить расширение файла.




А... хмм... я конечно, cmd использую редко, но параметры запуска пакетных файлов ещё не совсем из памяти стерлись... это чтобы опять не было обвинений в обзываниях Изображение

%1 - это первый параметр либо самого батника, либо call

%~n1 - то же самое, но из параметра выделяется имя файла по последней точке в полном имени (если, конечно, расширение у него есть)

Как-то так:

2023-1-13 12-56-38.png




То бишь, тут изначально непонятна суть задачи, а твой пример, просто может человека окончательно запутать и что куда добавлять ему, станет вообще темным лесом... Изображение

В общем, расшифровал что откуда берется для ТС
Аватара пользователя
Serguei Kouzmine

Re: CMD/BAT - Заменить расширение файла.

Сообщение Serguei Kouzmine »

для того чтобы работали ~x, ~n и т.д. нужно чтоб был вызов батника



call :TEST a.txt



goto :EOF



:TEST

echo %~n1

goto :EOF





то есть надо писать батник - в командной строке не сработает по моему
Вложения

[Расширение png было запрещено, вложение больше недоступно.]

Аватара пользователя
semiono

Re: CMD/BAT - Заменить расширение файла.

Сообщение semiono »

Цитата 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'
Аватара пользователя
YuS_2

Re: CMD/BAT - Заменить расширение файла.

Сообщение YuS_2 »

Цитата semiono:



хотя регэкспы ещё труднее
CMD/BAT - Заменить расширение файла.




Всё относительно...

Скажем так: для русского "китайская грамота" - темный лес... а для китайца или для того, кто её изучил? Они ведь и пишут, и разговаривают по-китайски! Изображение

Так и тут, всё кажется очень сложным, пока не изучено... а вот после изучения, уже не будет казаться "китайской грамотой"... Изображение
Ответить

Вернуться в «Скриптовые языки администрирования Windows»