2017-08-26 10 views
0

私はGNUPGまたはKleopatra(gpg4win)を手動で使用してファイルを解読できますが、バッチでこれを実行すると0 KBの出力が得られます。以下は私のコードです。解読後に0 KBの出力ファイル

@echo off 
set LOGFILE=Log.log 
call :LOG > %LOGFILE% 
exit 
:LOG 

for /f "delims=" %%a in ('wmic OS Get localdatetime ^| find "."') do set "dt=%%a" 
set "YYYY=%dt:~0,4%" 
set "MM=%dt:~4,2%" 
set "DD=%dt:~6,2%" 
set "HH=%dt:~8,2%" 
set "Min=%dt:~10,2%" 
set "Sec=%dt:~12,2%" 
set "secret=mypassword" 

set datestamp=%YYYY%%MM%%DD% 

set origPath=D:\Encrypted\ 
set origFile=my_test_file 
set origExt=.PGP 
set origCompleteFile=%origPath%%origFile%%datestamp%%origExt% 

set destPath=D:\Encrypted\ 
set destFile=my_test_file_ddmmyyyy 
set destExt=.csv 
set destCompleteFile=%destPath%%destFile%%YYYY%-%MM%-%DD%%destExt% 

set ctaFolder=N:\Test\ 

echo Decrypt file : "%origCompleteFile%" 
echo Save decrypted file in : "%destCompleteFile%" 

rem decrypt CTA File 
gpg --batch --passphrase "%secret%" --decrypt "%origCompleteFile%" > "%destCompleteFile%" 

rem copy to CTA folder in .54 
xcopy /s/y "%destCompleteFile%" "%ctaFolder%" 

答えて

0

バイナリデータをファイルにリダイレクトすることはできません。 Windowsのコマンドラインインターフェイスは、バイナリデータではなくテキストデータ用に設計されています。また、コマンド:LOGstdoutの出力で出力されるすべてのファイルは、バッチファイルによってLog.logにリダイレクトされます。

GPG manualは、このコンソールアプリケーションで使用できるすべてのコマンドラインオプションについて説明しています。

これは、復号化されたデータは、標準出力またはオプション--output後に指定したファイルにを処理するために書かれているオプション​​3210のために説明されています。

だから、解決策は単純にさらにオプション--outputの代わりに、ファイルへの STDOUT のリダイレクトを使用しています。

gpg --batch --passphrase "%secret%" --output "%destCompleteFile%" --decrypt "%origCompleteFile%" 

バッチ全体のコードは、このコードを最適化することができます

@echo off 
setlocal EnableExtensions DisableDelayedExpansion 
set "secret=mypassword" 

rem Get current date in format YYYYMMDD for usage in file name (DDMMYYYY commented out). 
for /F "tokens=2 delims==." %%I in ('%SystemRoot%\System32\wbem\wmic.exe OS GET LocalDateTime /VALUE') do set "LocalDateTime=%%I" 
rem set "FileNameDate=%LocalDateTime:~6,2%%LocalDateTime:~4,2%%LocalDateTime:~0,4%" 
set "FileNameDate=%LocalDateTime:~0,8%" 

set "origPath=D:\Encrypted\" 
set "origFile=my_test_file_" 
set "origExt=.csv.gpg" 
set "origCompleteFile=%origPath%%origFile%%FileNameDate%%origExt%" 

set "destPath=D:\Encrypted\" 
set "destFile=my_test_file_" 
set "destExt=.csv" 
set "destCompleteFile=%destPath%%destFile%%FileNameDate%%destExt%" 

set "ctaFolder=N:\Test\" 

echo Decrypt file: "%origCompleteFile%" 
echo Save decrypted file in: "%destCompleteFile%" 

rem Decrypt CTA file 
gpg --batch --passphrase "%secret%" --output "%destCompleteFile%" --decrypt "%origCompleteFile%" 

rem Copy to CTA folder in .54 
%SystemRoot%\System32\xcopy.exe "%destCompleteFile%" "%ctaFolder%" /Q /Y >nul 
endlocal 

環境変数ctaFolderによって定義されたフォルダに直接復号化されたファイルを生成するために、もちろん可能です。

関連する問題