window下使用批處理替換文本內(nèi)容

前言

作為一個(gè)后端,服務(wù)器的管理基本就是我的責(zé)任了。目前管理的是window服務(wù)器,和linux類(lèi)似,window提供了一個(gè)批處理進(jìn)行一些簡(jiǎn)單的操作。今天下午我就臨時(shí)現(xiàn)學(xué)了下如何使用批處理替換指定文件的內(nèi)容。

問(wèn)題

公司前端同事寫(xiě)了靜態(tài)頁(yè)面,部署到nginx服務(wù)器上時(shí),需要修改請(qǐng)求接口的地方。配置接口url和端口的地方在一個(gè)文件中。由于使用jenkins自動(dòng)部署,所以需要該操作需要自動(dòng)完成。

解決

百度谷歌了許久,才找到一些例子,參考著實(shí)現(xiàn)了下面的代碼
直接貼代碼了。

@echo off
setlocal enabledelayedexpansion
set file=D:\lightai-web\js\loginvue.js
set file_tmp=D:\lightai-web\js\loginvue_tmp.js
set file_bak=D:\lightai-web\js\loginvue_bak.js
set source1=100.224.226.100
set  source2=180

set replaced1=127.0.0.1
set replaced2=80

for /f "delims=" %%i in (%file%) do (
    set str=%%i
        set "str=!str:%source1%=%replaced1%!"
        set "str=!str:%source2%=%replaced2%!"
        echo !str!>>%file_tmp%
)
copy "%file%" "%file_bak%" >nul 2>nul
move "%file_tmp%" "%file%"

解釋下邏輯

  • 定義3個(gè)變量。分別是源文件、 臨時(shí)文件 、 備份文件。
  • 定義2對(duì)變量。source是 替換前的字符串。 replaced是 替換后的字符串。
  • 讀取文件的每一行。進(jìn)行替換。將內(nèi)容寫(xiě)入到臨時(shí)文件。
  • 備份源文件。
  • 臨時(shí)文件覆蓋源文件。完成替換。

使用方法

  • 準(zhǔn)備好文件。D:\lightai-web\js\loginvue.js
    例如下面的文件。
var app = new Vue({
  el: '.popbox',
   data: {
     usename:'',
     password:null,
     ip:'http://100.224.226.100',
     port:'180',
   },
    methods:{
        loginbtn:function(){
            this.$http.jsonp(this.ip+':'+this.port+'/user/login',{params:{'userName':this.usename,'password':this.password}
      }).then(function(response){
                var res=response.body
                if(res.success){
                localStorage.tara=res.data.token.token
                localStorage.name=res.data.token.userName
                localStorage.role=res.data.user.role
                localStorage.http=this.ip
                localStorage.port=this.port
                window.location.href="index.html"
                }
                else{
                  alert(res.message)
                }
            })
        },
        forget:function(){
            $('.contant').addClass("show")
        }
    }
})
  • 保存到bat文件中。雙擊執(zhí)行即可。
  • 此時(shí)打開(kāi)文件。即可發(fā)現(xiàn)變成如下結(jié)果
var app = new Vue({
  el: '.popbox',
   data: {
     usename:'',
     password:null,
     ip:'http://127.0.0.1',
     port:'80',
   },
    methods:{
        loginbtn:function(){
            this.$http.jsonp(this.ip+':'+this.port+'/user/login',{params:{'userName':this.usename,'password':this.password}
      }).then(function(response){
                var res=response.body
                if(res.success){
                localStorage.tara=res.data.token.token
                localStorage.name=res.data.token.userName
                localStorage.role=res.data.user.role
                localStorage.http=this.ip
                localStorage.port=this.port
                window.location.href="index.html"
                }
                else{
                  alert(res.message)
                }
            })
        },
        forget:function(){
            $('.contant').addClass("show")
        }
    }
})

存在的不足和坑

  • 目前如果文件路徑存在空格,上面的腳本無(wú)法正常執(zhí)行。嘗試過(guò)加引號(hào),未能解決。還好正常情況,路徑就不應(yīng)該 有空格。所以可以避免。
  • 替換后的文件可能多出 ECHO 處于打開(kāi)狀態(tài)的內(nèi)容,如果出現(xiàn)了,請(qǐng)找到相應(yīng)的位置,應(yīng)該是空字符串引起的。刪除掉源文件的空行即可避免。

吐槽

最后這個(gè)腳本,我反而沒(méi)用上。白費(fèi)了一些時(shí)間,記錄下來(lái)以讓其他人可以發(fā)揮作用。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容