批处理for循环中怎么给变量赋值、截取字符等操作?

下面一段代码,我的目的是在文件夹E:\test里,找出文件名后缀是.GRB2的文件,并对文件名进行判断。找出符合条件的文件名,把这个文件名写进下一句命令里。但我对DOS了... 下面一段代码,我的目的是在文件夹E:\test里,找出文件名后缀是.GRB2的文件,
并对文件名进行判断。找出符合条件的文件名,把这个文件名写进下一句命令里。
但我对DOS了解不多,语法不通。
@echo off&setlocal enabledelayedexpansion
set work_path=E:\test
E:
cd %work_path%

for /R %%s in (*.GRB2) do (
set str=%%s
echo !str!
rem 上面这句,屏幕输出的是e:\test\abc.GRB2
echo !str!:~3,4
rem 上面这句,屏幕输出的是e:\test\abc.GRB2:~3,4 我想要的是截取字符串后的test
if "!str!:~3,4"=="test" (
echo, %%s
rem 上一句显然也不对,并没有对!str!进行字符串截取
g2ctl %%s > e:/test/abc.ctl
rem 上一句是一个生成e:/test/abc.ctl文件的命令,其中%%s是符合上面if条件的文件名
) else (
rem 这里应该写什么,继续循环?
)
)
pause
我现在已经明白了想要截取字符串,需要先set a=!str!

if后面没有跟else,可以正常运行了
展开
 我来答
qop_dob
2016-12-20 · TA获得超过1.5万个赞
知道大有可为答主
回答量:1.3万
采纳率:79%
帮助的人:3984万
展开全部
@echo off
set "work_path=E:\test"
cd /d "work_path"
for /f "delims=" %%a in ('dir /a-d/b *.GRB2') do g2ctl "%%a">"%%~na.ctl"
pause

无误及时采纳回答

本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式