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
- Windows批處理檔案Windows
- 10 Windows批處理之呼叫例程和bat檔案WindowsBAT
- .NET 開源 EF Core 批處理擴充套件工具,真好用套件
- Laravel容器延遲載入以及Auth擴充套件詳解Laravel套件
- Windows批處理中的變數和值Windows變數
- windows刪除檔案的批處理操作Windows
- Laravel 檔案系統擴充套件(支援 OSS+ 七牛)Laravel套件
- windows下擴充套件yaf,並生成yaf框架檔案Windows套件框架
- window 批處理檔案
- 批處理檔案命令
- bat批處理檔案BAT
- aix擴充套件檔案系統AI套件
- aix 擴充套件檔案系統AI套件
- 擴充套件資料檔案大小套件
- Linux 檔案系統擴充套件Linux套件
- 使用Kafka分割槽擴充套件Spring Batch大資料排程批處理 – ArnoldKafka套件SpringBAT大資料
- windows批處理之五-for語句中的檔名擷取Windows
- MongoDB for Windows使用批處理檔案啟動閃退之空格惹的禍MongoDBWindows
- windows刪除幾天前檔案的批處理命令Windows
- 批處理-刪除環境變數變數
- 關於批處理中的變數變數
- 切換IP批處理檔案
- Python批處理:檔案操作Python
- Windows批處理命令Windows
- windows系統磁碟擴容/擴充套件Windows套件
- Windows批處理學習(二)——批處理(3)薦Windows
- hyperf oss/cos 檔案上傳擴充套件套件
- macOS 探尋檔案擴充套件屬性Mac套件
- 回滾段擴充套件資料檔案套件
- python擴充套件檔案import失敗Python套件Import
- Windows使用批處理給手機批量安裝apk檔案WindowsAPK
- Windows bat批處理刪除指定N天前的檔案WindowsBAT
- 編寫簡單的windows bat批處理指令碼檔案WindowsBAT指令碼
- 圖片處理擴充套件 Grafika 的簡單使用套件
- 表空間無法擴充套件問題處理套件
- 延遲載入 Dex 檔案