正如标题所暗示的那样,我试图将命令行输出设置为另一个命令行中的字符串。
示例:
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
尝试一下,我假设您的verpatch
和JREPL
命令都是正确的,(我从未使用过(:
@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)