Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Заменить расширение файла. (http://forum.oszone.net/showthread.php?t=352777)

semiono 13-01-2023 01:58 3000843

Заменить расширение файла.
 
Код:

%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 13-01-2023 02:38 3000844

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

megaloman 13-01-2023 08:22 3000849

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

YuS_2 13-01-2023 10:02 3000855

Вложений: 1
Цитата:

Цитата megaloman
Если %1 это test.au3
то %~n1.exe это test.exe »

А... хмм... я конечно, cmd использую редко, но параметры запуска пакетных файлов ещё не совсем из памяти стерлись... это чтобы опять не было обвинений в обзываниях :)
%1 - это первый параметр либо самого батника, либо call
%~n1 - то же самое, но из параметра выделяется имя файла по последней точке в полном имени (если, конечно, расширение у него есть)
Как-то так:
Файл 167843

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

Serguei Kouzmine 13-01-2023 18:48 3000900

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

call :TEST a.txt

goto :EOF

:TEST
echo %~n1
goto :EOF


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

semiono 13-01-2023 20:33 3000906

Цитата:

Цитата megaloman
%~n1.exe »

Удивительно, но это работает.
:)

Цитата:

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

Это самое трудное в 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 14-01-2023 15:15 3000948

Цитата:

Цитата semiono
хотя регэкспы ещё труднее »

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


Время: 00:47.

Время: 00:47.
© OSzone.net 2001-