将批处理命令行设置为另一个命令行中的字符串



正如标题所暗示的那样,我试图将命令行输出设置为另一个命令行中的字符串。

示例:

verpatch %% 〜ni %% 〜xi/s desc %% 〜ni/s评论%% 〜ni/pv '呼叫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评论%% 〜ni/pv 1.2.3.4

在这里我共享我的整个代码,因此您得到了这个想法:

@ECHO OFF
SETLOCAL
set file=C:UsersJackDesktopFiles*
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 Text Processor批处理功能文件 jrepl.bat.bat by dbenham

这是我第二次尝试将命令保存为变量:

@ECHO OFF
setlocal enabledelayedexpansion
set "file=C:UsersJackDesktopFiles*"
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.2.exe

等。

,我正在尝试制作一个从这些程序中提取程序名称和版本的批次,并将它们插入单个命令行,例如:

verpatch" programOne 1.2.3.4.exe"/s desc programone/s评论程序/pv 1.2.3.4

尝试一下,我假设您的verpatchJREPL命令都是正确的,(我从未使用过(

@Echo Off
Set "filelocn=C:UsersJackDesktopFiles"
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:UsersJackDesktopFiles"
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)

相关内容

  • 没有找到相关文章

最新更新