第一個 bat 檔案

minggoddess發表於2015-07-28

要寫一個批處理命令 轉換場景資料

 

包括從檔案裡讀入 

每一行資訊是一個要轉換的場景名字

可以拼出路徑

到指定路徑 執行命令

http://blog.csdn.net/mfx1986/article/details/5606228

FOR /F %%i IN xx.txt DO xxxx

 

擷取字串

@echo off
set ifo=abcdefghijklmnopqrstuvwxyz0 12 3456789
echo 原字元串(第二行為各字元的序號):
echo %ifo%
echo 1234567890123 45678901234567890123456
echo 擷取前5個字元
echo %ifo:~0,5%
echo 擷取最後5個字元
echo %ifo:~-5%
echo 擷取第一個到倒數第6個字元
echo %ifo:~0,-5%
echo 從第4個字元開始,擷取5個字元:
echo %ifo:~3,5%
echo 從倒數第14個字元開始,擷取5個字元:
echo %ifo:~-14,5%
pause
 
變數延遲
setlocal enabledelayedexpansion
 
現在遇到的問題是在for loop 裡set var  之後echo都是空的
顯示echo off ....echo on
http://blog.csdn.net/bingjie1217/article/details/12947327
 
http://www.cnblogs.com/dfg727/archive/2013/04/24/3040965.html
http://stackoverflow.com/questions/13805187/how-to-set-a-variable-inside-a-loop-for-f
....我要把自己埋吐血了
各種嘗試怎麼都沒法給 var賦值
明明變數延遲已經開了,最後我連函式都嘗試了
 
終於明白,是我最近養成的 等號前後空格的好習慣。。。
我可悲的coding style 怪不得var一直都是空!!!
for /F "tokens=*" %%a in ('type %FileName%') do call :Foo %%a
goto End

:Foo
set z=%1
echo %z%
echo %1
goto :eof

:End
是那個等號前後都不能有空格的意思。。。。花了我一個半小時。。。
==================================================================
 
終於明白,是我最近養成的 等號前後空格的好習慣。。。
如果不算之前除錯phyreengine那次,這是我第一個bat
好開心哈哈,我要把它抄過來,外面好熱,今天有37度,我在加班,快十點了,因為外面太熱了並且我有一個包子。
 
 1 @echo off
 2 setlocal EnableDelayedExpansion
 3 set rootMap=...
 4 rem there is a space between do and ( 
 5 for /f %%i in (maplist.txt) do (
 6 rem no space before and after = with set
 7 set scene=%%i
 8 set dir=!scene:~0,-2!
 9 set rootDir=!rootMap!\!dir!\!scene!
10 
11 c:
12 cd !rootDir!
13 call !rootMap!\...exe -para...
  @echo off
  setlocal EnableDelayedExpansion
  set rootMap=...
  rem there is a space between do and ( 
  for /f %%i in (maplist.txt) do (
  rem no space before and after = with set
  set scene=%%i
  set dir=!scene:~0,-2!
  set rootDir=!rootMap!\!dir!\!scene!
 
 c:
 cd !rootDir!
 call !rootMap!\...exe -para...
========================================
因為要buildmachine來編,這個bat有了2。0版本

其中我遇到個問題 就是 cd ..
一 cd 就閃退
原因是 不要雙擊bat而是
>cd ......
......>xxx.bat

2.0版本是這樣的加了幾個
cd..
call ..\..\xxx.exe


 

相關文章