Batch file 我需要从批处理输入循环中的命令获取文件名

Batch file 我需要从批处理输入循环中的命令获取文件名,batch-file,arguments,substring,Batch File,Arguments,Substring,我正在批处理文件中进行提示循环 我正在尝试读取命令和参数的输入 目前,我检查了open的前4个字母,然后我想抓取下一个单词,它应该是要打开的文件名 我想抓取索引1处空格之间的文本 打开file.txt->文件.txt 我需要一个中弦的倒数 中间字符串:%input:~0,4%-openfile.txt->open 我真的需要%input:~5,-0%才能工作!哈哈 %input:~5,-1%有效。。。为什么不使用0而不是1 很遗憾,batch无法获取字符串的长度 我发现了一些可以得到字符串长度的

我正在批处理文件中进行提示循环

我正在尝试读取命令和参数的输入

目前,我检查了
open
的前4个字母,然后我想抓取下一个单词,它应该是要打开的文件名

我想抓取索引1处空格之间的文本

打开file.txt
->
文件.txt

我需要一个中弦的倒数

中间字符串:
%input:~0,4%
-
openfile.txt
->
open

我真的需要
%input:~5,-0%
才能工作!哈哈

%input:~5,-1%
有效。。。为什么不使用
0
而不是
1

很遗憾,batch无法获取字符串的长度

我发现了一些可以得到字符串长度的东西:

我用代码试过了:

call :strlen length input
echo %input:~5,length%
它的语法总是很奇怪

@echo off
set "input=open file.txt"
for /f "tokens=2" %%a in ('echo/%input%') do (set "fileName=%%a")
echo/%fileName%
pause>nul
如果未指明,则一直到字符串末尾

如果未指明,则一直到字符串末尾

如果未指明,则一直到字符串末尾


直到字符串末尾,如果没有指示。

Rafaels答案有一点变化(检查第一个单词的
是否打开
):


Rafaels答案的一点变化(检查第一个单词的
open
):


Rafaels答案的一点变化(检查第一个单词的
open
):


Rafaels答案的一点变化(检查第一个单词的
open
):

echo %input:~5%
@echo off
set "input=open file.txt"
for /f "tokens=1,2" %%a in ('echo/%input%') do ( if /i "%%a"=="open" set "fileName=%%b")
echo/%fileName%
pause>nul