教你如何利用bat腳本批量?重命名/復(fù)制?文件
在平時運維的時候,最繁瑣的就是要每個月寫運維記錄的文檔如excel表格,一個月30日要產(chǎn)生30個文件,拷30個運維記錄文檔的模版再進(jìn)行重命名實在太麻煩了,所以想到copy模版之后可以用腳本來對文件進(jìn)行重命名自己想要的效果,首先給出效果圖
下面給出腳本
@echo off set /p m=請輸入月份如:5(m): set a=0 setlocal EnableDelayedExpansion dir /b .\*.xls | find /c /v "" >> .\tmp.txt set /p c=<.\tmp.txt del /a /f /q .\tmp.txt for %%i in (*.xls) do ( set /a a+=1 if !a! gtr %c% (goto aa) echo !a! echo %%i ren "%%i" "日常運維檢查記錄2018-%m%-!a!.xls" ) :aa pause
腳本解釋:
dir /b下面接上find命令來統(tǒng)計當(dāng)前目錄下的xls格式的文件數(shù),這里假設(shè)我運維記錄的文件使xls格式的,然后把統(tǒng)計的文件數(shù)寫入txt文件中,例如有5個xls文件就會把5寫入,然后從這個txt中讀出這個數(shù)字賦值給c變量,再把這個txt文件刪除
后面的for循環(huán)就是重命名文件了,這里注意有一點,為什么我在for循環(huán)中要加個條件語句呢?這個條件語句的意思是一旦a變量(這里a代表著文件重命名中的文件名天數(shù)的后綴名,由1開始計數(shù),直到達(dá)到文件夾中重命名的xls文件數(shù)為止)大于c變量(統(tǒng)計的用于重命名xls文件數(shù)),就會終止這個循環(huán)并且跳出到aa,這里發(fā)現(xiàn)在重命名文件的時候會循環(huán)會溢出多一次,也就是假設(shè)原來有5個xls文件要重命名,在用這個循環(huán)重命名的時候如果不加這個if語句來防止溢出,就會重命名了6次,從而把第一個重命名的文件再次重命名,這里給出圖給大家看一下就知道了
這里加入有5個3月份的運維檢查記錄文件
假如我在代碼中把if語句屏蔽了
然后執(zhí)行腳本,把這5個文件重命名成4月份的運維檢查記錄文件
發(fā)現(xiàn)循環(huán)執(zhí)行了6次,并且看到最后一次重命名把第一個重命名的文件4-1給替換調(diào)了4-6
經(jīng)過上面的解釋,大家應(yīng)該有個理解了把!
在代碼中我這里規(guī)定了重命名的文件后綴的年份是2018年,這里大家可以模仿月份的輸入set /p來加上一個年份的輸入,引用變量就可以重命名自己想要的年份后綴名,下面說下這個重命名腳本的使用規(guī)則,注意將腳本文件先保存成ansi編碼的格式再在里面編輯含有中文的代碼,不然重命名或者執(zhí)行腳本的時候會報錯喔
重命名文件.bat
1新建月份文件夾如:4月
2關(guān)閉360等軟件
3復(fù)制運維記錄的文件到月份文件夾下
4把腳本放在月份文件夾下執(zhí)行
就可以看到當(dāng)前文件夾下會有我們重命名的文件名字了
其實與其重命名文件,大家也可以考慮用復(fù)制文件辦法,這樣就不用考慮重命名時候的溢出問題,下面給出文件復(fù)制的辦法
@echo off set /p year=請輸入年份如:2018(year): set /p month=請輸入月份如:4(month): set /p day=請輸入這個月的天數(shù)如:30(day): if %day%==31 ( for /l %%d in (1,1,%day%) do copy .\module.xls .\日常運維檢查記錄%year%-%month%-%%d.xls goto aa) if %day%==30 ( for /l %%d in (1,1,%day%) do copy .\module.xls .\日常運維檢查記錄%year%-%month%-%%d.xls goto aa) if %day%==29 ( for /l %%d in (1,1,%day%) do copy .\module.xls .\日常運維檢查記錄%year%-%month%-%%d.xls goto aa) if %day%==28 ( for /l %%d in (1,1,%day%) do copy .\module.xls .\日常運維檢查記錄%year%-%month%-%%d.xls goto aa) if %day%==27 ( for /l %%d in (1,1,%day%) do copy .\module.xls .\日常運維檢查記錄%year%-%month%-%%d.xls goto aa) if %day%==26 ( for /l %%d in (1,1,%day%) do copy .\module.xls .\日常運維檢查記錄%year%-%month%-%%d.xls goto aa) echo "輸入的天數(shù)不符合規(guī)則!" :aa pause exit
代碼比較簡單,這里我規(guī)定了要把module.xls這個運維記錄的模版文件放在當(dāng)前新建的月份文件夾下,然后通過復(fù)制這個文件來生成對應(yīng)天數(shù)的運維檢查記錄文件,這里我規(guī)定了天數(shù)26-31天,同樣要注意的是腳本的編碼要是ansi編碼
下面給出操作方法和效果圖
批量復(fù)制文件.bat
1新建月份文件夾如:4月
2將模版文件更名為module.xls放在月份文件夾下
3把腳本放在月份文件夾下面執(zhí)行腳本輸入?yún)?shù)
到此這篇關(guān)于教你如何利用bat腳本批量 重命名/復(fù)制 文件的文章就介紹到這了,更多相關(guān)bat腳本批量 重命名內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
在WINDOWS下dos與批處理中的命令cd /d %~dp0及其用途
這篇文章主要介紹了在WINDOWS下dos與批處理中的命令cd /d %~dp0及其用途,需要的朋友可以參考下2023-05-05DOS下的系統(tǒng)設(shè)備加載與系統(tǒng)環(huán)境設(shè)置
考慮到現(xiàn)在上網(wǎng)的朋友,大都沒有從基礎(chǔ)上接觸過DOS,也很少有在實際應(yīng)用的環(huán)境下接觸DOS的機(jī)會,所以特別講一下DOS下的系統(tǒng)設(shè)備加載與系統(tǒng)環(huán)境設(shè)置,以便于大家真正的能使用DOS2023-08-08.bat文件中start、pause、goto及rem的用法示例
最近接觸到了bat批處理命令,發(fā)現(xiàn)了一些以前沒注意到的知識點,所以下面這篇文章主要給大家介紹了關(guān)于.bat文件中start、pause、goto及rem用法的相關(guān)資料,需要的朋友可以參考下2022-04-04