String 在批处理文件中最后一个分隔符实例之后提取字符串
我正在编写一个由Java程序调用的Windows批处理文件。表示文件目录的许多不同字符串作为参数传递到批处理文件中。我试图找出如何在“\”的最后一个实例之后提取字符串。例如,我有三个目录:String 在批处理文件中最后一个分隔符实例之后提取字符串,string,batch-file,split,delimiter,String,Batch File,Split,Delimiter,我正在编写一个由Java程序调用的Windows批处理文件。表示文件目录的许多不同字符串作为参数传递到批处理文件中。我试图找出如何在“\”的最后一个实例之后提取字符串。例如,我有三个目录: C:\Users\owner\Documents C:\Users\owner\Videos C:\Users\owner\Pictures\Trip 我想将其拆分,使字符串成为: Documents Videos Trip 你们建议我怎么做 编辑:这里询问了一个后续问题:如果字符串作为参数1-3传递。您
C:\Users\owner\Documents
C:\Users\owner\Videos
C:\Users\owner\Pictures\Trip
我想将其拆分,使字符串成为:
Documents
Videos
Trip
你们建议我怎么做
编辑:这里询问了一个后续问题:如果字符串作为参数1-3传递。您可以使用%%n1、%~n2、%~n3获取路径中的最后一个文件夹。将一个参数指定给“param”变量后,使用:
for %%a in (%param:\= %) do set lastDir=%%a
只要最后一个目录没有空格,此方法就可以工作。如果需要,此细节可能会被修复。所有参数的处理如下所示:
:nextParam
set "param=%~1"
if not defined param goto endParams
for %%a in (%param:\= %) do set lastDir=%%a
echo Last dir: %lastDir%
shift
goto nextParam
:endParams
或者,以更简单的方式(没有空格限制):
我认为这是一个好的开始。我忘了提到有未知数量的参数传入批处理文件,因此我必须让程序确定参数的数量,并为每个参数确定参数的数量。您可以创建一个无限循环,读取“特定”(参数)处的值“位置和移位”,直到该位置的值变为空白。这个答案非常有用!这正是我想要的。感谢所有帮助过你的人!
:nextParam
if "%~1" equ "" goto endParams
echo Last dir: %~N1
shift
goto nextParam
:endParams