String 从ini文件中找到的路径中提取文件名
我需要从批处理文件的一行中找到的路径中提取信息。具体来说,这句话说:String 从ini文件中找到的路径中提取文件名,string,batch-file,String,Batch File,我需要从批处理文件的一行中找到的路径中提取信息。具体来说,这句话说: GLOBP4P=C:\folderx\foldery\folderz\datag.p4p 我需要提取的是上面标识为“数据”的部分。g.p4p始终存在,GLOBP4P始终存在,但两者之间的内容可能因文件而异。我基本上想去掉g.p4p,然后将剩下的任何内容写入第一个“\”变量。在这种情况下,变量将存储“数据”。我的问题是,“数据”可以是任意数量的字符,也可以有任意数量的路径文件夹,等等 我试图用“\”为/f做一个,尝试将字符串分
GLOBP4P=C:\folderx\foldery\folderz\datag.p4p
我需要提取的是上面标识为“数据”的部分。g.p4p
始终存在,GLOBP4P
始终存在,但两者之间的内容可能因文件而异。我基本上想去掉g.p4p
,然后将剩下的任何内容写入第一个“\”
变量。在这种情况下,变量将存储“数据”
。我的问题是,“数据”
可以是任意数量的字符,也可以有任意数量的路径文件夹,等等
我试图用“\”为/f做一个,尝试将字符串分开,但由于我不知道会有多少文件夹,我不知道如何识别以独占方式使用最后一个文件夹(即文件名)
谢谢
编辑:添加了一些解释
在FOR命令中,%%~N
仅返回FOR参数的文件名,在本例中为datag
string。输入以获取/?
了解更多详细信息
当变量通过%var%
展开时,%var:~START,LEN%
表示法指示提取从开始
字符(从零开始)开始并带有LEN
字符的子字符串。如果LEN
有减号,则从字符串末尾向后指示最后一个字符。在这种情况下,%var:~0,-1%
表示从var
中提取除最后一个字符以外的所有字符,即从数据g
字符串中删除最后一个字符。输入SET/?
了解更多详细信息。试试这个。您将获得在ini
文件中找到的最后一次发生的事件:
@echo off
::The name of the bat file to test
Set $bat="The_ini_file_to_test.ini"
::Finding the string "GLOBP4P" and setting the value in it
for /f %%a in ('findstr /i "GLOBP4P" "%$bat%"') do set %%a
::Getting the first and the Last element of the path
set first=%GLOBP4P:\=&set last=%
::Outputting some results
echo File : [%last%]
echo Data : [%last:~0,-5%]
echo drive : [%first%]
这也应该起作用:
@echo off
for /f "delims=" %%a in ('findstr /i "GLOBP4P=" "file.ini"') do set "var=%%~na"
set "var=%var:~0,-1%"
echo "%var%"
findstr将执行正则表达式模式匹配。您能为OP提供一些说明吗?
@echo off
for /f "delims=" %%a in ('findstr /i "GLOBP4P=" "file.ini"') do set "var=%%~na"
set "var=%var:~0,-1%"
echo "%var%"