windows批處理之七-變數延遲擴充套件與檔案重新命名
之前從sqlserver備份了大量儲存過程,以每個儲存過程一個檔案的方式匯出。格式如下:
資料庫名稱.架構名稱.過程名稱,如:ods_data.dbo.sp_etl_channelno.sql
通常這種檔名看起來比較麻煩,有的檔名長點的就被省略掉了。所以,希望能夠將檔名的字首都截掉,保留實際的儲存過程名稱即可。
如果只有幾個檔案,那可以直接手工修改。但是,如果有幾十個上百個,手工處理就不那麼讓人愉快了。所以,這個時候就需要批處理出馬。
那麼,批處理該怎麼做?
我的理解是,用for迴圈遍歷出檔名,然後依次rename即可。所以,就有了如下程式碼:
for /F %%i in('dir *.sql') do (
rename %%i %i:~13%
)
跑了之後,發現不對。開始以為是字串擷取的語法寫錯了。查了下,沒錯。於是上網找案例。發現很多重新命名的案例都會出現感嘆號引用變數的情況,不明白為何意。
於是又搜尋“批處理 感嘆號”的關鍵字,結果出來有關變數延遲擴充套件的概念,再補習了下這塊概念。
發現微軟對於DOS指令碼語言的支援確實比較弱,好好的一段程式碼,硬是被直譯器解釋的奇奇怪怪,再到讓人詬病的for迴圈語法,讓人無法理解。
好了,言歸正傳,學習了變數延遲擴充套件的概念後,就知道為什麼我的for迴圈用不了了。
首先,申明要變數延遲擴充套件:
setlocal ENABLEDELAYEDEXPANSION
然後,告訴直譯器,變數在什麼情況下要延遲(即感嘆號代替百分號引用),如:
set b=!b:~1!
完整的程式碼如下(擷取13位以後的檔名):
@echo off
setlocal ENABLEDELAYEDEXPANSION
for /f %%a in ('dir /b *.sql') do (
set b=%%a
set b=!b:~13!
ren "%%a" "!b!"
)
pause
資料庫名稱.架構名稱.過程名稱,如:ods_data.dbo.sp_etl_channelno.sql
通常這種檔名看起來比較麻煩,有的檔名長點的就被省略掉了。所以,希望能夠將檔名的字首都截掉,保留實際的儲存過程名稱即可。
如果只有幾個檔案,那可以直接手工修改。但是,如果有幾十個上百個,手工處理就不那麼讓人愉快了。所以,這個時候就需要批處理出馬。
那麼,批處理該怎麼做?
我的理解是,用for迴圈遍歷出檔名,然後依次rename即可。所以,就有了如下程式碼:
for /F %%i in('dir *.sql') do (
rename %%i %i:~13%
)
跑了之後,發現不對。開始以為是字串擷取的語法寫錯了。查了下,沒錯。於是上網找案例。發現很多重新命名的案例都會出現感嘆號引用變數的情況,不明白為何意。
於是又搜尋“批處理 感嘆號”的關鍵字,結果出來有關變數延遲擴充套件的概念,再補習了下這塊概念。
發現微軟對於DOS指令碼語言的支援確實比較弱,好好的一段程式碼,硬是被直譯器解釋的奇奇怪怪,再到讓人詬病的for迴圈語法,讓人無法理解。
好了,言歸正傳,學習了變數延遲擴充套件的概念後,就知道為什麼我的for迴圈用不了了。
首先,申明要變數延遲擴充套件:
setlocal ENABLEDELAYEDEXPANSION
然後,告訴直譯器,變數在什麼情況下要延遲(即感嘆號代替百分號引用),如:
set b=!b:~1!
完整的程式碼如下(擷取13位以後的檔名):
@echo off
setlocal ENABLEDELAYEDEXPANSION
for /f %%a in ('dir /b *.sql') do (
set b=%%a
set b=!b:~13!
ren "%%a" "!b!"
)
pause
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12932950/viewspace-1437270/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 03 Windows批處理的作用域和延遲擴充套件Windows套件
- 07 Windows批處理之檔案操作Windows
- 10 Windows批處理之呼叫例程和bat檔案WindowsBAT
- .NET 開源 EF Core 批處理擴充套件工具,真好用套件
- Windows批處理中的變數和值Windows變數
- Laravel 檔案系統擴充套件(支援 OSS+ 七牛)Laravel套件
- [20180319]windows批處理檔案大小比較.txtWindows
- Linux 檔案系統擴充套件Linux套件
- window 批處理檔案
- python擴充套件檔案import失敗Python套件Import
- 使用Kafka分割槽擴充套件Spring Batch大資料排程批處理 – ArnoldKafka套件SpringBAT大資料
- windows10如何對多個檔案重新命名_windows10批量重新命名檔案的方法Windows
- windows10如何對多個檔案重新命名_windows10批次重新命名檔案的方法Windows
- Python批處理:檔案操作Python
- MongoDB for Windows使用批處理檔案啟動閃退之空格惹的禍MongoDBWindows
- cmd批處理無法使用 提示windows找不到檔案Windows
- LVM : 擴充套件檔案系統的容量LVM套件
- hyperf oss/cos 檔案上傳擴充套件套件
- macOS 探尋檔案擴充套件屬性Mac套件
- windows系統磁碟擴容/擴充套件Windows套件
- Windows使用批處理給手機批量安裝apk檔案WindowsAPK
- 圖片處理擴充套件 Grafika 的簡單使用套件
- windows下pcntl擴充不存在處理方法Windows
- 批處理-刪除環境變數變數
- springboot擴充套件配置檔案自動載入Spring Boot套件
- ASP.NET Core擴充套件庫之Http通用擴充套件ASP.NET套件HTTP
- bat批處理使用ren批次重新命名檔案,比如批次去掉檔名稱的前4位BAT
- [20190219]變態的windows批處理6.txtWindows
- [20211207]變態的windows批處理10.txtWindows
- [20211011]變態的windows批處理9.txtWindows
- [20210510]變態的windows批處理7.txtWindows
- 一個簡單的 PHP 時間處理擴充套件PHP套件
- 圖片處理擴充套件 Intervention/image 的簡單使用套件
- Lambda擴充套件與用途套件
- BSGS與擴充套件BSGS套件
- MyBaits | 對映檔案之引數處理AI
- Zoey.Dapper–Dapper擴充套件之把SQL語句放到檔案中APP套件SQL
- kotlin 擴充套件(擴充套件函式和擴充套件屬性)Kotlin套件函式
- spring4.1.8擴充套件實戰之七:控制bean(BeanPostProcessor介面)Spring套件Bean