批处理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,可以正常运行了 展开
并对文件名进行判断。找出符合条件的文件名,把这个文件名写进下一句命令里。
但我对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,可以正常运行了 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询