bat命令實現動態修改

2021-07-02 01:07:46 字數 1535 閱讀 3529

針對bat相關命令 ,不一一陳列了,就將自己做的乙個事情時遇到的問題,以及解決問題時候思路過程做一記錄,以便後續查詢。

前提:

有乙個這樣的需求:有一段指令碼**,**中有乙個陣列,你現在要在打包之前,動態的往**中的陣列中新增一些值,如:

準備修改的檔案test.lua

config = {};

config.one = "0"

; config.two = "1"

; config.configs = ;

我們現在做的事情,就是寫乙個配置檔案,沒在打包之前,呼叫這個配置檔案,然後動態的將配置檔案中的值寫入到config.configs這個table中去。

假設給乙個配置檔案kchannel.txt

600

457879

裡面就三個值,最後達成的效果如下:

config = {};

config.one = "0"

; config.two = "1"

; config.configs = ;

執行過程:

我們打算建乙個bat檔案:config.bat,然後將上述kchannel.txt配置檔案拖到config.bat上,然後達到動態修改test.lua的效果

實現過程:

1.首先解決 獲取bat拖上檔案的路徑 : 「%~f1」標識檔案的路徑;」%~f0」標識bat批處理檔案的路徑;

2.其次涉及到字串的處理,而且在迴圈中涉及到變數處理:

1)、在迴圈中要對變數再編輯的話,要啟用延遲變數的設定,用setlocal命令,具體的你輸入setlocal /?看幫助,它一般是跟 endlocal配對使用,要不然迴圈資料多的時候,會出錯

2)、用for讀取檔案的時候,最好不要直接用檔名,而要用more命令來讀取。否則在列表檔名的中間有空格的時候,好像會出錯。

3)、在使用使用延遲環境變數的範圍內操作某個變數的話,要用 !變數名!,而不是%變數名%,for自身的變數%%a等例外。

3.見最終核心程式:

@echo off

setlocal enabledelayedexpansion

set "fn=test.lua"

set "aim=config.configs = {"

for /f "delims=: tokens=1*" %%i

in ('more %~f1') do (

set kchannel=!kchannel!"%%i",

)(for /f "delims=: tokens=1*" %%i

in ('findstr /n .* "%fn%"') do (

if "%aim%" equ "%%j" (echo,%aim%&echo,%kchannel%)else

echo;%%j

))>temp.txt

endlocal

that』s all

修改ip位址bat

echo off mode con cols 50 lines 20 title ip位址設定工具 color 3f clsecho.echo.echo ip位址切換程式 echo echo.echo 自動獲取動態ip,請按 0 echo.echo 手工設定的ip1,請按 1 echo.echo 手...

android menu 實現動態修改menu

在乙個android建立選單menu時,需要重寫activity的oncreateoptionsmenu menu menu 方法,這個方法只在第一次建立的時候呼叫一次,所以如果之後想對menu進行動態的修改,那麼就不要再對oncreateoptionsmenu做什麼手腳了。於是就要用到onprep...

bat命令總結

今天就先搞一搞dos命令的檔案處理吧,其實dos命令真的很強大。比如c c 你操作個檔案,還要建立個物件,還要搞指標,讀寫方式,然後再操作之類的,就沒有命令列下方便。學會dos下的檔案處理,要搞明白 資料i o流重定向 硬碟儲存和高速快閃儲存器 我先說一下原理,然後再將具體實現吧 情景 在你用記事本...