首頁 > 軟體

Windows批次處理壓縮包內加密pdf檔案解密的操作步驟

2022-10-26 14:01:13

前言

一個朋友跟我抱怨說,有沒有好的方法處理40多個壓縮包內的加密pdf檔案,並自動壓縮回壓縮包內?之前10幾個壓縮包的時候還覺得工作量還行,20幾個加密pdf檔案也就1個小時的事情,現在是40多個壓縮包,90個加密檔案,一個一個這樣幹太枯燥了。

一、批次處理是什麼?

批次處理就是可以對檔案進行批次處理,而不需要一個一個的去對檔案執行相同的操作。Window下的批次處理一般有幾種方式,第一種是直接在CMD的Dos介面執行批次處理命令,第二種就是儲存檔案為bat格式,然後雙擊執行檔案就可以自動執行檔案內的所有批次處理命令,類似於Python檔案。

二、使用步驟

1.同時登入多個微信批次處理

工作中經常會出現私人有一個微信,公司又有一個微信,所以想在一臺電腦上同時登入私人和公司的微信,工作和生活兩不誤。同時登入多個微信有多個方法。

第一個方法是,將滑鼠指標移到微信圖示並選中,然後連續按Enter鍵幾次以上,就可以登入多個微信賬號,要求是賬號必須在手機登入,並進行掃碼。

第二個方法就是可以通過批次處理的方式進行登入。

批次處理的操作步驟如下:

(1)新建一個bat檔案。

新建一個txt檔案,然後將字尾名txt改成bat就可以。

(2)編輯bat檔案,記事本開啟檔案然後將以下程式碼複製進去

::關閉回顯(命令不列印輸出),@命令從本行開始
@echo off

::執行第一個微信
start /d "D:ProgramFilesTencentWeChat" WeChat.exe

::執行第二個微信
start /d "D:ProgramFilesTencentWeChat" WeChat.exe

exit

紅色部分需要替換成你自己的微信安裝目錄。

start命令,/d表示啟動目錄。整個命令的格式如下圖。

2.多個壓縮包加密pdf檔案解密

因為我用的pdf解密軟體(PDFPasswordRemover)雖然支援批次處理,但官方檔案沒有給出如何在Windwos系統下批次處理呼叫方式,它的批次處理方式是將所有pdf檔案拖入軟體框內就可以批次處理進行解密操作,所以我寫的批次處理操作需要將所有壓縮包內的pdf檔案解壓後拷貝到同一個資料夾內,有知道的小夥伴可以在評論區告訴我。

(1)解壓所有壓縮包

::關閉回顯(命令不列印輸出),@命令從本行開始
@echo off
::查詢當前資料夾內所有的.zip檔案並使用WinRAR進行解壓
for %%i in (*.zip) do (D:ProgramFilesWinRarWinRAR.exe x -y %%i)
pause

注意:執行這個命令需要安裝WinRAR軟體,並且需要更改紅色的路徑。

目前這個命令可行的是WinRar軟體,360Zip是不行的,這樣寫會變成壓縮命令。

以下是for命令的格式和引數。

(2)將所有解壓出來的pdf檔案拷貝到一個資料夾內。

/r引數是表示遍歷當前目錄以及所有子目錄。

/y引數是表示目標檔案存在同名檔案時,預設覆蓋掉此檔案。

::關閉回顯(命令不列印輸出),@命令從本行開始
@echo off

::建立一個目標路徑變數tarDir
set tarDir=C:Outputpdf

::路徑不存在則建立一個
if not exist %tarDir% (mkdir %tarDir%)

::查詢當前路徑以及子目錄下的所有以.pdf結尾的檔案,覆蓋拷貝到目標路徑
for /r %%i in (*.pdf) do (copy /y %%i %tarDir% > nul)

pause

copy的命令格式和引數。

這兩個命令檔案可以合併成一個,執行完第一步之後,加入此步的for行命令。

(3)批次解密pdf檔案

將上一步的C:Outputpdf資料夾內所有pdf拖入下面的軟體中,

上面軟體的輸出預設在C:Output資料夾

(4)批次拷貝解密後的pdf檔案回壓縮包目錄

解密後的pdf檔案預設會新增_Password_Removed.pdf字尾

也就是我們拷貝回去的時候,只需要拷貝字尾是_Password_Removed.pdf的檔案,而原來的pdf檔名稱是去掉_Password_Removed,所以我們需要判斷之前壓縮包解壓出來的目錄,是否存在原檔案,如果存在則拷貝字尾是_Password_Removed.pdf的解密檔案,不存在則跳過。

::關閉回顯(命令不列印輸出),@命令從本行開始
@echo off
::設定延遲變數
setlocal EnableDelayedExpansion

::建立變數srcDir並賦值
set srcDir=C:Output
::建立變數tarDir並賦值bat檔案所處目錄
set tarDir=%cd%

::外層for迴圈遍歷檔名包含_Password_Removed的檔案
for /f "delims=" %%i in ('dir %srcDir% /b *_Password_Removed*') do (
    ::對檔名進行處理,並去除_Password_Removed
    ::echo %%i
    set var=%%i
    set var=!var:_Password_Removed=!
    ::echo %%i !var!
    ::遍歷壓縮包目錄的子目錄,並判斷子目錄是否包含原檔案
    for /f %%j in ('dir %tarDir% /ad/b/s') do (
        ::echo -
        set cur="%%j!var!"
        ::echo !cur!
        ::原檔案存在則拷貝外層解密檔案
        if exist !cur! ( echo ---%%i %%j & copy /y %srcDir%%%i %%j > nul)
    )
)

pause

記得需要把bat檔案放置到原先的壓縮包目錄。

/f參數列示對目錄以及子目錄進行遍歷迴圈時,可以開啟檔案,並將檔案裡面的內容讀取到記憶體,你可以對這個檔案的內容再進行遍歷,目前這裡還不需要,只需要檔名就可以了。

dir表示指向目錄。/b捨棄標題與摘要內容,不加這個視窗會多出很多列印。

/b /a:d選項是指定顯示所有具有該屬性的檔案目錄。

/s 查詢當前目錄以及所有子目錄下的檔案。

set var=!var:_Password_Removed=!

這條語句就是將_Password_Removed賦值為空,如果想改成其它的,直接在修改=後面就可以了。

copy /y選項是存在預設處理方式是覆蓋掉檔案,不加這個會一直彈窗讓你選擇。

(5)批次壓縮目錄

::關閉回顯(命令不列印輸出),@命令從本行開始
@echo off
::查詢當前資料夾內所有的目錄,並將其壓縮成目錄名.zip檔案,壓縮完不刪除原檔案目錄
for /d %%i in (*) do (D:ProgramFilesWinRarWinRAR.exe a -k -r -s -m1 %%i.zip %%i)

pause

WinRAR批次處理命令。

a :備份所有檔案。-k :鎖定壓縮檔案。-r:備份目錄和子目錄。-s :建立固實壓縮檔案。

-m<n>:設定壓縮模式,從底到高壓縮率越高:-m0不壓縮方式儲存;-m1最快;-m2較快;-m3標準(預設);-m4較好;-m5最好。

總結

以上就是對批次處理命令的理解了,批次處理對於重複性工作的幫助還是挺大的,能夠大大提高工作的效率。


IT145.com E-mail:sddin#qq.com