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