2013-06-05 15 views
58

Tôi đang cố gắng tạo trình cài đặt bằng hàng loạt. Tất nhiên, một trình cài đặt cần phải bao gồm các tệp sẽ được cài đặt, vì vậy tôi đang nghĩ đến việc mã hóa các tệp trong base64 và chỉ giải mã chúng và ghi chúng vào đích của chúng.Giải mã base64 theo lô

Tất nhiên, công việc của tôi sẽ rất dễ dàng nếu Windows có thứ gì đó giống như công cụ base64 mà các hộp Linux chứa. Tuy nhiên, vì nó chỉ đơn giản là không có, có cách nào để giải mã nội dung base64 hoàn toàn bằng cách sử dụng các tập tin batch? Và làm thế nào tôi sẽ thực hiện được điều này?

Mọi trợ giúp đều được đánh giá cao.

(Nó chỉ là một thử nghiệm, vì vậy tôi không lo lắng về việc không hiệu quả và những thứ tương tự.)

+0

Ngoài ra kiểm tra này ra: http://f2ko.de/en/b64.php –

Trả lời

121

Hiện nay Windows không có một tiện ích mã hóa và giải mã base64 - Certutil

Tôi không chắc chắn những gì phiên bản Windows đã giới thiệu lệnh này.

Để mã hóa một tập tin:

certutil -encode inputFileName encodedOutputFileName 

Để giải mã một tập tin:

certutil -decode encodedInputFileName decodedOutputFileName 

Có một số động từ có sẵn và các tùy chọn có sẵn để Certutil.

Để có được một danh sách các động từ gần như tất cả có sẵn:

certutil -? 

Để được trợ giúp về một động từ đặc biệt (-encode ví dụ):

certutil -encode -? 

Để có được sự giúp đỡ đầy đủ cho gần như tất cả các động từ :

certutil -v -? 

Bí ẩn, động từ -encodehex không được liệt kê với certutil -? hoặc certutil -v -?. Nhưng nó được mô tả bằng cách sử dụng certutil -encodehex -?. Đây là một chức năng tiện dụng khác :-)

+6

[Certutil] (http://technet.microsoft.com/library/cc732443.aspx) đã được khoảng từ tại ít nhất [Windows Server 2003] (http://msdn.microsoft.com/en-us/subscriptions/cc773087.aspx). –

+23

Tôi đã đưa ra một số tỷ lệ cược tốt rằng "base64 theo lô" là điều tuyệt vọng nhất mà tôi từng nhập trong một công cụ tìm kiếm –

+0

và ở đây chúng tôi đang có! –

4

Đây là tệp lô, được gọi là base64encode.bat, mã hóa base64.

@echo off 
if not "%1" == "" goto :arg1exists 
echo usage: base64encode input-file [output-file] 
goto :eof 
:arg1exists 
set base64out=%2 
if "%base64out%" == "" set base64out=con 
(
    set base64tmp=base64.tmp 
    certutil -encode "%1" %base64tmp% > nul 
    findstr /v /c:- %base64tmp% 
    erase %base64tmp% 
) > %base64out%