Установить командную строку пакета как строку в другой командной строке - PullRequest
0 голосов
/ 25 апреля 2018

Как подсказывает заголовок, я пытаюсь установить вывод командной строки в виде строки в другой командной строке.

Пример:

verpatch %% ~ ni %% ~ xi / s desc %% ~ ni / s comment %% ~ ni / pv 'call jrepl "[0-9] +. [0-9] +. [0-9] +. [0-9] + "" "/ match / s% filename% '

Пожалуйстаобратите внимание, что:

call jrepl "[0-9]+.[0-9]+.[0-9]+.[0-9]+" "" /match /s %filename%

- это еще одна команда, которая выводит: 1.2.3.4 [Это функция, которая извлекает числа из имени файла]

Так что мне нужен этот выводкак это:

verpatch %% ~ ni %% ~ xi / s desc %% ~ ni / s comment %% ~ ni / pv 1.2.3.4

Здесь я делюсь всем своим кодомИтак, вы поняли:

@ECHO OFF
SETLOCAL
set file=C:\Users\Jack\Desktop\Files\*
set dot=.
FOR %%i IN ("%file%") DO (
set filedrive=%%~di
set filepath=%%~pi
set filename=%%~ni
set fileextension=%%~xi
:: This Line is supposed to store jrepl command as a string ::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
SET COMMAND="call jrepl "[0-9]+\.[0-9]+\.[0-9]+.[0-9]+" "" /match /s %filename%"
:: Extract the string and print to the screen
verpatch %%~ni%%~xi  /s desc %%~ni /s comment %%~ni /pv %COMMAND%
pause
)

pause

jrepl - файл пакетных функций текстового процессора regex JREPL.BAT от dbenham

Это моя вторая попытка сохранить команду в строке в качестве переменной:

@ECHO OFF
setlocal enabledelayedexpansion
set "file=C:\Users\Jack\Desktop\Files\*"
FOR %%i IN ("%file%") DO (
set filedrive=%%~di
set filepath=%%~pi
set filename=%%~ni
set fileextension=%%~xi
: Save Command Line as a variable
for /f "delims=" %%a in ('call jrepl "[0-9]+\.[0-9]+\.[0-9]+.[0-9]+" "" /match /s %%~ni') do @set theValue=%%a 
verpatch %%~ni%%~xi  /s desc %%~ni /s comment %%~ni /pv %theValue%
pause
)
pause

У меня есть папка, заполненная моими личными программами

ProgramOne 1.2.3.4.exe

ProgramTwo 2.2.2.2.exe

и т. д.

, и я пытаюсь создать пакет, который извлекает имя программы и версию из этих программы и вставьте их в отдельные командные строки, например:

verpatch "ProgramOne 1.2.3.4.exe" / s desc ProgramOne / s комментарий ProgramOne / pv 1.2.3.4

1 Ответ

0 голосов
/ 25 апреля 2018

Попробуйте, Я предполагаю, что обе ваши команды verpatch и JREPL верны (я их никогда не использовал) :

@Echo Off
Set "filelocn=C:\Users\Jack\Desktop\Files"
For %%A In ("%filelocn%\*.exe") Do (For /F %%B In (
        'jrepl "[0-9]+\.[0-9]+\.[0-9]+.[0-9]+" "" /match /s %%~nA') Do (
        verpatch "%%A" /s desc "%%~nA" /s comment "%%~nA" /pv %%B
        Pause))

Редактировать

В зависимости от предоставленной вами стратегии именования файлов и без использования JREPL это может работать для вас:

@Echo Off
Set "filelocn=C:\Users\Jack\Desktop\Files"
Set "progName="
For %%A In ("%filelocn%\*.exe") Do (SetLocal EnableDelayedExpansion
    For %%B In (%%~nA) Do If Not Defined progName (Set "progName=%%B"
    ) Else Set "fileVer=%%B"
    verpatch "%%A" /s desc !progName! /s comment !progName! /pv !fileVer!
    EndLocal)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...