批处理实战篇---修改文件变量、参数

目录

1、简介

2、启动程序:run.bat

知识点1:

1、获取当前路径:set cur_dir=%cd%

2、调用.bat:call mk.bat

3、调用并输出到指定文件:call  tmc13.bat > %cur_dir%\result.txt

4、for循环

3、创建文件夹:mk.bat

知识点2:

1、 启用延迟环境变量扩展setlocal enabledelayedexpansion

2、创建文件夹

3、拷贝目标文件encode.cfg到目标路径%cur_dir%\A\B\C

4、实时更新:!var!

5、修改文件的变量参数

4、编解码程序tmc.exe:tmc.bat

5、计算PSNR:PSNR.bat 

6、从txt提取数据到excel :extract.bat

知识点3:

1、echo A 'TAB键' B 'TAB键' C >result.xls


1、简介

项目研究MPEG-3DG G-PCC,需要测试很多数据,很多简单繁琐的人为操作真是太磨人了,于是自己琢磨写了个批处理。

2、启动程序:run.bat

知识点1:

1、获取当前路径:set cur_dir=%cd%

2、调用.bat:call mk.bat

3、调用并输出到指定文件:call  tmc13.bat > %cur_dir%\result.txt

4、for循环

::Batch Processing 
::
::Running TMC13.exe from a lot of point cloud file to generate test data 


REM @cur_dir:获取当前路径
set cur_dir=%cd%

REM 调用mk.bat:创建输出目录与生成必要的配置文件
call mk.bat

REM @plyname:测试的点云文件
set plyname=(Egyptian_mask_vox12^
			 longdress_vox10_1300^
			 loot_vox10_1200^
			 queenframe_0200^
			 redandblack_vox10_1550^
			 Shiva_00035_vox12^
			 soldier_vox10_0690)

REM 可执行文件:0_tmc.exe,5_tmc.exe
set bin_kind=(0,5)

REM 调用tmc.bat和PSNR.bat
for %%B in %bin_kind% do (
for %%P in %plyname% do (
REM 调用编解码程序并保存至指定路径
call tmc3.bat>%cur_dir%\%%P\%%B\%%P_bpp.txt %%P %%B
pause
)
)
for %%B in %bin_kind% do (
for %%P in %plyname% do (
REM 调用PSNR程序并保存至指定路径
call PSNR.bat>%cur_dir%\%%P\%%B\%%P_PSNR.txt %%P %%B
)
)
pause 

3、创建文件夹:mk.bat

知识点2:

1、 启用延迟环境变量扩展
setlocal enabledelayedexpansion

...

endlocal

2、创建文件夹

md %cur_dir%\A\B\C

3、拷贝目标文件encode.cfg到目标路径%cur_dir%\A\B\C

copy  encode.cfg %cur_dir%\A\B\C

4、实时更新:!var!

5、修改文件的变量参数

REM 匹配qSL所在的行并修改对应量化步长
if "%%a"=="%qSL%" ( 
set var=%%Q
)
echo !qS! !var!>>%cur_dir%\%%P\%%B\%%Q\$

REM 替换原始的配置文件
move %cur_dir%\%%P\%%B\%%Q\$ %cur_dir%\%%P\%%B\%%Q\encoder.cfg

::Batch Processing 
::
::Create an output directory and generate the necessary configuration files


REM @cur_dir:获取当前路径
set cur_dir=%cd%

REM @cfg_dir:用户需要根据自身配置文件的路径替换掉下面的路径
set cfg_dir=D:\PointCloud\TMC13v5\cfg\octree-predlift\lossless-geom-nearlossless-attrs
REM @ply_dir:用户需要根据自身点云文件的路径替换掉下面的路径
set ply_dir=D:\PointCloud\realDataset

REM @plyname:测试的点云文件
set plyname=(Egyptian_mask_vox12^
			 longdress_vox10_1300^
			 loot_vox10_1200^
			 queenframe_0200^
			 redandblack_vox10_1550^
			 Shiva_00035_vox12^
			 soldier_vox10_0690)
			 
REM 启用延迟环境变量扩展
setlocal enabledelayedexpansion

REM @qSL,@qSC:需要修改的量化步长参数
set qSL=quantizationStepLuma:
set qSC=quantizationStepChroma:

REM @bin_kind:可执行文件0_tmc.exe,5_tmc.exe
set bin_kind=(0,5)

REM @QuantStep:量化步长
set QuantStep=(20,30,40,50)

REM For循环
for %%B in %bin_kind% do (
for %%P in %plyname% do (
for %%Q in %QuantStep% do (
REM 创建文件夹
md  %cur_dir%\%%P\%%B\%%Q
REM 拷贝配置文件
copy %cfg_dir%\%%P\r05\encoder.cfg %cur_dir%\%%P\%%B\%%Q
copy %cfg_dir%\%%P\r05\decoder.cfg %cur_dir%\%%P
copy %ply_dir%\%%P.ply %cur_dir%\%%P
set cfg_path=%cur_dir%\%%P\%%B\%%Q
set cfg_txt=%cur_dir%\%%P\%%B\%%Q\encoder.cfg
REM 修改的量化步长参数
for /f "tokens=1,2 delims= " %%a in (%cfg_dir%\%%P\r05\encoder.cfg) do (
set qS=%%a
set var=%%b

REM 匹配qSL所在的行并修改对应量化步长
if "%%a"=="%qSL%" ( 
set var=%%Q
)

REM 匹配qSC所在的行并修改对应量化步长
if "%%a"=="%qSC%" ( 
set var=%%Q
)
echo !qS! !var!>>%cur_dir%\%%P\%%B\%%Q\$
)

REM 替换原始的配置文件
move %cur_dir%\%%P\%%B\%%Q\$ %cur_dir%\%%P\%%B\%%Q\encoder.cfg
)
)
)

4、编解码程序tmc.exe:tmc.bat

::Batch Processing 
::
::Running pc_error_d.exe to generate PSNR data 


REM @cur_dir:获取当前路径
set cur_dir=%cd%
REM @QuantStep:量化步长
set QuantStep=(20,30,40,50)

for %%Q in %QuantStep% do (
REM 点云编码
%2_tmc.exe -c %cur_dir%\%1\%2\%%Q\encoder.cfg --uncompressedDataPath=%cur_dir%\%1\%1.ply --compressedStreamPath=%cur_dir%\%1\%2\%%Q\compressed.bin 

REM 点云解码
%2_tmc.exe -c %cur_dir%\%1\decoder.cfg --compressedStreamPath=%cur_dir%\%1\%2\%%Q\compressed.bin --reconstructedDataPath=%cur_dir%\%1\%2\%%Q\chongjian.ply
)

5、计算PSNR:PSNR.bat 

::Batch Processing 
::
::Running pc_error_d.exe to generate PSNR data 


REM @cur_dir:获取当前路径
set cur_dir=%cd%
REM @QuantStep:量化步长
set QuantStep=(20,30,40,50)
REM 循环计算PSNR
for %%Q in %QuantStep% do (
pc_error_d -a %cur_dir%\%1\%1.ply -b %cur_dir%\%1\%2\qs=%%Q\chongjian.ply -c
)

6、从txt提取数据到excel :extract.bat

知识点3:

1、echo A 'TAB键' B 'TAB键' C >result.xls

::Batch Processing 
::
::Import data into excel 


@echo off
REM @cur_dir:获取当前路径
set cur_dir=%cd%
del %cur_dir%\outdata.xls
REM @plyname:测试的点云文件
set plyname=(Egyptian_mask_vox12^
			 loot_vox10_1200^
			 queenframe_0200^
			 redandblack_vox10_1550^
			 Shiva_00035_vox12^
			 soldier_vox10_0690)
			
REM @bin_kind:可执行文件exe的种类
set bin_kind=(0,5)

REM For循环
setlocal enabledelayedexpansion
for %%P in %plyname% do (
for %%B in %bin_kind% do (
 echo %%P %%B	Bitrate	Y	Bitrate	U	Bitrate	V>>%cur_dir%\outdata.xls 
 set num=0
 REM 用户
REM Bitrate
for /f "tokens=1-6 delims= " %%a in (%cur_dir%\%%P\%%B\result.txt) do (
if "%%a"=="colors" if "%%b"=="bitstream" if "%%c"=="size" if "%%f" NEQ "" (
	set /a num=!num!+1
	set b!num!=%%d ) 
)
REM PSNR
 set n=0
for /f "tokens=1-3 delims= " %%a in (%cur_dir%\%%P\%%B\PSNR.txt) do (    
    if "%%a"=="c[0],PSNRF" (
        set Y=%%c
    ) 
	if "%%a"=="c[1],PSNRF" (
        set U=%%c
    ) 
	if "%%a"=="c[2],PSNRF" (
        set V=%%c
		set /a n=!n!+1
		if "!n!"=="1" (
    	echo 	!b1!	!Y!	!b1!	!U!	!b1!	!V!>>outdata.xls )
		if "!n!"=="2" (
    	echo 	!b2!	!Y!	!b2!	!U!	!b2!	!V!>>outdata.xls )
		if "!n!"=="3" (
    	echo 	!b3!	!Y!	!b3!	!U!	!b3!	!V!>>outdata.xls )
		if "!n!"=="4" (
    	echo 	!b4!	!Y!	!b4!	!U!	!b4!	!V!>>outdata.xls )
	)
)
)
)
endlocal
pause 

 

你可能感兴趣的:(批处理实战篇---修改文件变量、参数)