bat实现检测fluent当前文件夹最新文件

公司做计算任务太重,买了好多台电脑,一算到半路停了个电,这家伙给我整的手忙脚乱的,各种重新启动计算,整个汪生都不好了,就想取个巧,让系统每次启动自动检测最近一次计算的文件,然后加载执行,搜索了很多,怕忘记了于是写下来做个记录,如果能给别人一点帮助就更好了。第一次写批处理,肯定是漏洞百出,不过在win10下运行正常。

rem表示这段话被注释了

echo off    rem 让你执行的批处理不显示具体代码,我感觉就是为了画面不要太乱。。。

setlocal enabledelayedexpansion  rem 这句就有点意思了,不知道为啥,在没有它的时候给变量之间传值无效,有了这一句以后,变量赋值的时候要变成set 变量=!变量!

set Ftemp=0 rem set 是设置变量,或是赋值什么的。这里初始两个变量用于下面比较

set Ttemp=0

for /r %%a in (*.cas) do (

rem bat里命令不区分大小写,但是要注意多空格,for是循环这不用说,但是对于批处理我的理解for更多是遍历的意思,后面解释

rem for。。。in。。。do()/r这个位置的参数有三个,/d /r /l /f 

rem /d是取目录名字,不取文件名  /l类似C的for循环,可以设定循环多少次(在in后面的参数里给三个数,百度很多自己搜索

rem /f更复杂了,http://blog.csdn.net/jeefchen/article/details/5663822这篇文章很有帮助,为了感谢我已经粉了他

rem 这里用的是/r简单点说就是搜索目录和文件,

rem 这里唠叨一句,这个遍历的思想很重要

rem 除了/l参数以外,/d /r /f都是类似搜索引擎

rem 具体过程感觉像是,在根据指定的参数,搜索目录/文件/字符串,看到符合条件限制的单元的就进去执行以下do后面的代码,

rem %%a也有讲究,上面的博文说的很详细 

rem in后面的.cas是指后缀名为cas的文件,这是我的计算文件,*是通配符,这里可以根据你的文件名


if "!Ttemp!" lss "%%~ta" (


rem 这里的Ttemp变量就加了!,据说这样才能表示它现在的值?不太懂

rem lss是if的比较大小的小于号,equ是等于,大于是啥来着,忘了,百度吧

rem 这里要说一下的是%%~ta,%%后面加变量名表示变量自不必说,这个~ta就有点。。。

rem ~ta意味着当前被遍历抓住的文件的创建(是创建还是修改来着忘了)时间,这个变量虽然连在一起但其实~t和a是两个东西,

rem ~t是参数,a代表的是for里的变量%%a,也就是说如果上面for中用的是%%i或是%%x,这里就要写%%~ti或%%tx

set Ftemp=%%a

set Ttemp=%%~ta

echo !Ftemp!

echo !Ttemp! rem 这里就是显示一下两个变量里是啥

echo 这个文件是最新的

) else ( rem 这里要注意一下else必须被俩括号背着,并且中间有空格。。。我犯了好多次,就是不记着。。。果然是老了

echo !Ftemp!

echo !Ttemp!

echo 这个文件是以前的

)

)

echo !Ftemp!

echo !Ttemp!

echo file/read-cas %Ftemp%>>xx.txt rem 这是输出给我的计算软件用的TUI,还挺方便,想要在txt里写啥就用>>输出就行了,不过后面遇到了一点异常,到时候再说


set Fdatemp=0

set Tdatemp=0

for /r %%a in (*.dat) do (

if "!Tdatemp!" lss "%%~ta" (

set Fdatemp=%%a

set Tdatemp=%%~ta

echo 这个文件是新的

)

) rem 这段主要上面的复制,不用解释

echo !Fdatemp!

echo !Tdatemp!


set str=!Ftemp! rem 这一段是从文件名中提取字符,我的命名是按照AB16cut16M-60-60-3m.cas或是.dat。这里先把Ftemp放到str别丢了

:cutagain rem 冒号后面的字符可以被bat识别为行标志,可以通过goto跳达

if "!str:~0,1!"=="-" ( rem 字符串剪切具体查百度有很多,0代表从第0个字符开始,1代表剪一个出来

set str=!str:~1! rem 

echo !str!

goto next rem next是行标,下面有

) else ( rem 注意else前后要有空格和()

set str=!str:~1!

goto cutagain rem 跳到上面的cutagain行

)

echo !str! rem 我这里主要是想要裁出AB16cut16M-60-60-3m.中的3,这里的3有可能是两位数,标志着计算运行到了哪里,

rem 这里就取出了3及其后面的字符

:next

set str=!str:~6,2!

if "!str:~1!"=="m" (

set num=!str:~0,1!

echo !num!

) else (

set num=!str!

) rem 这段就取出了我想要的3及其之后,并且在m之前的东西

echo file/read-data %Fdatemp%>>xx.txt

echo file/auto-save/max-files 2>>xx.txt

echo solve/initialize/initialize-flow>>xx.txt

echo file/write-case %Ftemp% o>>xx.txt rem 这一段就是输出到xx.txt文本文档,是给fluent用的TUI

echo file/write-data %Fdatemp% o>>xx.txt rem 但是这里的o前面总是莫名其妙的带很长的空格,,额。。。貌似不叫空格,应该是两个制表符


if "!num!"=="3" (

goto cas9

) else if "!num!"="9" (

goto case18

)else if  "!num!"="18" (

goto case27

)else if  "!num!"="27" (

goto case36

)else if  "!num!"="36" (

goto case45

)else if  "!num!"="45" (

goto case54

)else if  "!num!"="54" (

goto case60

)


:cas9 rem 还有很多但都是操作fluent的,我就不写了

:cas18

:cas27

:cas36

:cas45

:cas54

:cas60 rem 这些就都省略了

ren xx.txt 2.jou  rem 这是把xx.txt的文件名改为2.jou,因为fluent识别jou文件

cd c:\ rem 这里启动fluent我也不写了

fluent 3d -t4 -i e:\2.jou rem 这都是启动fluent的TUI命令,-t4是说用四核计算,-i是有jou文件要导入

cd e:\

vbpost.vbs 这里是计算完了以后用vbs给我发个邮件

echo 处理成功

pause>nul

发布了4 篇原创文章 · 获赞 3 · 访问量 1948

猜你喜欢

转载自blog.csdn.net/ytfy339784578/article/details/50424230