批處理文件-復制和重命名


1. 把當前目錄下所有子文件夾中的.tar/.rar/.zip文件復制到同一目錄下

  • 當前目錄有多個子文件夾,有的子文件夾有內容,有的是空的,需要將子文件夾中的壓縮包復制到一個相同的目錄(D:/新建文件夾/)下
  1. 在命令行窗口進入當前目錄,並輸入echo off,關閉其他所有命令(不包括本身這條命令)的回顯(只是為了方便看,不關閉直接第二步也行)

  1. 輸入處理命令
    • 在cmd中只需要一個%;在bat批處理中要用%%,因為編譯器編譯的時候會屏蔽(或者說消除?)一個%。
for /f "delims=" %i in ('dir /s/b') do (
    if exist "%i\*.rar" copy "%i\*.rar" D:\test\新建文件夾
    if exist "%i\*.zip" copy "%i\*.zip" D:\test\新建文件夾
    if exist "%i\*.tar" copy "%i\*.tar" D:\test\新建文件夾
)

  1. 回車,顯示結果,復制完成

2. 在源目錄下復制指定文件名的文件到目標目錄,並給目標目錄下每個文件編號,刪除原文件(bat)

  • 一個源文件夾中有多個子文件夾,把該文件夾下所有文件名中包含“報告”的.doc或.docx文件移動到指定的文件夾下,並給每個文件加上編號,然后刪除原目錄下的已經被復制過的文件
  1. 在源目錄下,新建一個.txt文件,輸入以下代碼

變量a用來記錄編號
使用xcopy的時候會詢問是否是目錄(F = 文件,D = 目錄),一遍一遍輸入太麻煩,用echo f | 可以自動輸入f表示這是一個文件,當然也可以把f改成d。
%i包括文件名和擴展名,%%~ni表示僅將 %i 擴展到一個文件名,而%~xi表示僅將 %i 擴展到一個文件擴展名

@echo off&setlocal enabledelayedexpansion
set a=0
for /f "tokens=* delims="  %%i in ('dir /s/b *報告*.doc*') do (
    set /a a=a+1
    echo f | xcopy "%%i" "D:\test\報告\!a!-%%~ni.doc"
    del "%%i"
)
pause

  1. 另存為.bat文件,注意在“編碼”處選擇“ANSI”(默認是UTF-8,中文字符無法表達,會亂碼)


  1. 雙擊.bat文件直接運行,彈出命令行窗口顯示運行結果

  1. 查看目標文件夾

3. 將源目錄下的所有文件編號重命名

  • 該目錄下只有.doc或.docx文件,把這些文件全部命名為“三位數編號-報告.docx”,編號不足三位數用0補足。
  1. 在該目錄下新建一個.txt文件,輸入以下代碼,並另存為.bat文件(選擇ANSI編碼)

變量a計數,fn補足數位
fn:~-4表示截取fn中倒數第4個位以后的字符,即三個字符。

@echo off&setlocal enabledelayedexpansion
set a=0
for /f "delims="  %%i in ('dir /a-d /b *.doc*') do (
    set /a a=a+1
    set fn="000!a!"
    ren "%%i" "!fn:~-4!-報告.docx"
)
pause

  1. 雙擊.bat文件運行,文件重命名成功。



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM