本帖最后由 qixiaobin0715 于 2024-1-9 16:08 编辑
回复 9# qd2024
将关键词分为3类:
1.科目为第1类,由于变动不大,设置为变量即可;
set ConWords1=各学科 语文 数学 物理 化学 历史 英语 道法
2.中考和高考之类的为第2类,由于你不考虑高考,这里以中考为例,也设置为变量;如果中考高考综合考虑的话,需要在文件名中进行区分,即要含有高考或中考的词汇,代码也需要做相应的调整;
set ConWords2=中考 一模 二模 三模
3.年级和册数为第3类,由于其关键词数量多,变动大,并且考虑到之后还要进行增加新的词汇,可以考虑将其放在文本(比如文本ConWords.txt)中,具体形式及要求详见7楼中的说明;
ConWords.txt内容示范如下,可根据实际情况自己增减。文本中的说明文字可保留,不会影响代码运行结果。- 关键词既关联年级又关联册数的信息,类似下面的形式。
- 一上-1A
- 九上-9A
- 一下-1B
- 九下-9B
-
- 关键词只关联年级或者只关联册数的信息,类似下面的形式。
- 1-1
- 2-2
- 9-9
-
- 一年-1
- 九年-9
-
- 上学期-A
- 第一学期-A
- 下学期-B
复制代码 代码test.bat- @echo off
- set ConWords1=各学科 语文 数学 物理 化学 历史 英语 道法
- set ConWords2=中考 一模 二模 三模
- for /f "delims=" %%i in ('dir /b /a-d') do (
- setlocal enabledelayedexpansion
- for %%j in (%ConWords2%) do (
- set str=%%i
- set str=!str:%%j=!
- if not "!str!"=="%%i" set str2=!str2!%%j
- )
- for %%j in (%ConWords1%) do (
- set str=%%i
- set str=!str:%%j=!
- if not "!str!"=="%%i" set str1=%%j
- )
- if defined str2 (
- set str1=!str1!9B
- ) else (
- set str=%%i
- for %%j in (期中考试 00 01 02 03 04 05 06 07 08 09) do set str=!str:%%j=!
- for /l %%j in (10,1,99) do set str=!str:%%j=!
- for /f "tokens=1,2 delims=-" %%a in (ConWords.txt) do (
- if not "!str!"=="!str:%%a=!" (
- set str1=!str1!%%b
- )
- )
- )
- if defined str2 (
- set FileNamePre=[!str1!.!str2!]
- ) else (
- if defined str1 set FileNamePre=[!str1!]
- )
- if defined FileNamePre echo,!FileNamePre!%%i
- endlocal
- )
- pause
复制代码
|