DOS批量重命名

下面有一些文件:dir /b *.*得到
144-10.1.4.150-1484707792127
2326-10.1.4.150-1484708376194
3682-10.1.4.150-1484709441269
4346-10.1.4.150-1484708488670
4378-10.1.4.150-1484708700869
4407-10.1.4.150-1484709887151
4421-10.1.4.150-1484709934360
4565-10.1.4.150-1484709319358
4940-10.1.4.150-1484709211319
4992-10.1.4.150-1484708156493
5105-10.1.4.150-1484708598561
5262-10.1.4.150-1484709077347
5559-10.1.4.150-1484708769183
5622-10.1.4.150-1484709663010
7669-10.1.4.150-1484709567772
8124-10.1.4.150-1484708839802
9152-10.1.4.150-1484709390804

如何改成 第一列.txt呢?
同目錄下面新建一個bat文件,內容爲:

@ECHO OFF
FOR /F "tokens=1,* delims=-" %%i in ('dir /b *.*') do ( 
    if  not "%%~ni"=="%~n0"  if not "%%~xi"==".txt" (
             echo %%i-%%j
             ren %%i-%%j %%i.txt
    )
)
pause

改腳本知識點:
1. for /F支持一些參數,tokens是表示變量和分割之後的對應關係。
2. tokens=1,*表示 %i對應第1列,其餘列剩下的所有內容在%j。字母根據tokens序列依次往後順延。
3. delims表示分隔符爲-
4. dir /b *.*列出僅僅有文件名(包含擴展)列表
5. "%%~ni"=="%~n0",%~ni表示%i擴展到文件名不含擴展名。(%%~ni表示取出這個變量)
6. "%~n0"表示當前腳本的文件名,處理文件的時候應該忽略腳本本身。
7. %~xi表示%i擴展到當前的文件擴展名,例如是”.txt”
8. if語句兩個語句 連接 不是and 也不是 &&,用的是if 條件1 和if 條件2直接用空格連接。
9. %%i-%%j直接字符串拼接得到原始文件名,使用ren命令得到%%i.txt,也就是第一列加上.txt

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章