教你如何利用bat腳本批量?重命名/復(fù)制?文件
在平時(shí)運(yùn)維的時(shí)候,最繁瑣的就是要每個(gè)月寫運(yùn)維記錄的文檔如excel表格,一個(gè)月30日要產(chǎn)生30個(gè)文件,拷30個(gè)運(yùn)維記錄文檔的模版再進(jìn)行重命名實(shí)在太麻煩了,所以想到copy模版之后可以用腳本來對(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命令來統(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è)條件語句呢?這個(gè)條件語句的意思是一旦a變量(這里a代表著文件重命名中的文件名天數(shù)的后綴名,由1開始計(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è)原來有5個(gè)xls文件要重命名,在用這個(gè)循環(huán)重命名的時(shí)候如果不加這個(gè)if語句來防止溢出,就會(huì)重命名了6次,從而把第一個(gè)重命名的文件再次重命名,這里給出圖給大家看一下就知道了
這里加入有5個(gè)3月份的運(yùn)維檢查記錄文件

假如我在代碼中把if語句屏蔽了

然后執(zhí)行腳本,把這5個(gè)文件重命名成4月份的運(yùn)維檢查記錄文件

發(fā)現(xiàn)循環(huán)執(zhí)行了6次,并且看到最后一次重命名把第一個(gè)重命名的文件4-1給替換調(diào)了4-6

經(jīng)過上面的解釋,大家應(yīng)該有個(gè)理解了把!
在代碼中我這里規(guī)定了重命名的文件后綴的年份是2018年,這里大家可以模仿月份的輸入set /p來加上一個(gè)年份的輸入,引用變量就可以重命名自己想要的年份后綴名,下面說下這個(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í)候的溢出問題,下面給出文件復(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
代碼比較簡單,這里我規(guī)定了要把module.xls這個(gè)運(yùn)維記錄的模版文件放在當(dāng)前新建的月份文件夾下,然后通過復(fù)制這個(gè)文件來生成對(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)文章
Win10利用bat文件實(shí)現(xiàn)文件與文件夾批量重命名的實(shí)踐
本文主要介紹了Win10利用bat文件實(shí)現(xiàn)文件與文件夾批量重命名的實(shí)踐,這樣就免去了通過寫一個(gè)腳本,或者代碼程序來運(yùn)行,具有一定的參考價(jià)值,感興趣的可以了解一下2022-04-04
批處理delims=和tokens=星號(hào) 的使用差別
"delims=" 的含義是取消默認(rèn)的分隔符,所以會(huì)把行上的內(nèi)容照搬下來,而 "tokens=*" 表示獲取行上的所有內(nèi)容,但是會(huì)忽略行首的所有空格。2008-08-08
將字符串小寫轉(zhuǎn)大寫并延時(shí)輸出的批處理代碼
有一字符串i like the bathome,because here is the batch of the world. 要求用批處理將字符串的所有字母轉(zhuǎn)成大寫并在屏幕上以打字的效果延時(shí)輸出。2010-10-10
cacls命令設(shè)置文件及其文件夾權(quán)限的方法
這篇文章主要介紹了使用cacls命令設(shè)置文件及其文件夾權(quán)限的方法,需要的朋友可以參考下2014-07-07
用批處理實(shí)現(xiàn)強(qiáng)制與他人QQ聊天
用批處理實(shí)現(xiàn)強(qiáng)制與他人QQ聊天...2007-02-02
利用DOS命令來對(duì)抗U盤病毒保護(hù)U盤數(shù)據(jù)
為了保護(hù)好U盤的數(shù)據(jù),滅除U盤病毒成為了用戶們的首要任務(wù),下面就教大家一個(gè)小技巧,利用DOS命令來對(duì)抗U盤病毒2014-06-06

