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

时间:2014-04-10 01:46:38

标签: batch-file arguments substring

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

我试图读取命令和参数的输入。

目前,我检查open的前4个字母,然后我想抓住下一个应该是要打开的文件名的字。

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

open file.txt - > file.txt

我需要类似中间字符串的反转

mid-string:%input:~0,4% - open file.txt - > open

老实说,我需要%input:~5,-0%才能工作!哈哈

%input:~5,-1%有效...为什么不使用0代替1

太糟糕的批处理无法获得字符串的长度。

我发现了一些可以获得字符串长度的东西: How do you get the string length in a batch file?

我用代码尝试了它:

call :strlen length input
echo %input:~5,length%

它总是解析得很奇怪。

3 个答案:

答案 0 :(得分:2)

echo %input:~5%

如果未指示,则直到字符串的末尾。

答案 1 :(得分:1)

拉斐尔答案的一点变化(检查open的第一个字):

@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

答案 2 :(得分:0)

@echo off
set "input=open file.txt"
for /f "tokens=2" %%a in ('echo/%input%') do (set "fileName=%%a")
echo/%fileName%
pause>nul