2016-11-17 12 views
0

GPG(または7-Zip)を使用してファイルのハッシュサムを生成しています。これらのハッシュサムをバッチファイルの変数に読み込んで、それらのハッシュをさらに操作したいと思っています。for/f:さまざまな区切り文字で入力を読み取る

SHA256、ショートパス:

c:\test.txt: E3B0C442 98FC1C14 9AFBF4C8 996FB924 27AE41E4 649B934C A495991B 
     7852B855 

MD5、ショートパス:

c:\test.txt: D4 1D 8C D9 8F 00 B2 04 E9 80 09 98 EC F8 42 7E 

私の問題は、GPGが異なる出力を路長にベース作成しhashalgo-選択されたことですSHA256、長いパス:

C:\Folder1\Folder2\Folder3\Testfile-longname.ext1.txt: 
764B2054 853B6BCC 919853DD D47F4A3A F5A2DFB1 A5EE6967 52051E1E 12B143CC 
(GPGまたは

7-Zip (a) [64] 16.04 : Copyright (c) 1999-2016 Igor Pavlov : 2016-10-04 
Scanning 
1 file, 296533469 bytes (283 MiB) 
CRC32 SHA256               Size   Name 
-------- ---------------------------------------------------------------- ------------- ------------ 
BB280EC2 22B8AB1B1AD2F04A47BFD409997A834B30C617B619522381123B7D2AD8F724F9 123456789  Testfile-longname.ext1.txt 
-------- ---------------------------------------------------------------- ------------- ------------ 
BB280EC2 22B8AB1B1AD2F04A47BFD409997A834B30C617B619522381123B7D2AD8F724F9  296533469 
Size: 123456789 
CRC32 for data:    BB280EC2 
SHA256 for data:    22B8AB1B1AD2F04A47BFD409997A834B30C617B619522381123B7D2AD8F724F9 

は、残念ながら、私が使用したパスの長さとhashalgoについての予測を行うことはできませんが、私が使用しているプログラムと言うことができます:ファイルのCRC32とSHA256を使用したとき

7-Zipは、次の出力が得られます7-zip)。

/fのためのdelimsとトークンでさまざまな設定を試しましたが、7ジップ出力のGPG出力とCRC32(おそらくSHA256)ではMD5とSHA256を確実にキャッチできませんでした。

ありがとうございました!

説明: GPGでは、チェックサムを取得できないさまざまな出力形式に問題があります。 7-ZIPを使用する場合、出力の大部分(重要でない部分)からチェックサムを抽出することができます。あなたが与えた出力の例

+0

GPG _and_ 7-zipに問題がありますか?または単にGPG?それぞれの場合に入力/出力を表示するために質問を編集できますか?あなたが物事を試したように見えるので、おそらくあなたの試みです。 –

+1

私は組み込みのツール 'certutil'を使ってチェックサムを得るでしょう。値は常に出力の2行目にあります。 – SomethingDark

+0

GPGを使用したい場合は、2番目のコロンをスキャンし、その後すべてを追加してハッシュ値を取得することができます。 – aschipfl

答えて

1

、これを試してみてください。

for /f "tokens=1,2,3,4 delims=: " %a in ('type foobar.txt ^| findstr "data"') do echo %d 

foobar.txtはあなたのコマンドの出力が含まれている場合は、コマンドをタイプfoobar.txtを置き換えることができます。

+0

2つの問題:1)test-full.sha256に7-ZIP出力が含まれています。タイプc:\ folder1 \ folder2 \ folder3 \ folder4 \ test-full.sha256 | findstr "data"は、コマンドプロンプトのtype c:¥folder1¥folder2¥folder3¥folder4¥test-full.sha256 ^内で動作します。バッチファイルで使用されるfindstr "data"はtest-full.sha256の内容を出力として表示しますが、 "filename、directory name、...の構文は間違っています"と表示されます。パイプのfindstr部分は機能しません。 – Moriarty

+0

2)/ f "tokens = 1,2,3,4 delims =:"%a( 'c:\ folder1 \ folder2 \ folder3 \ folder4 \ test-full.sha256^| findstr "このエラーでは、 "\ folder1 \ folder2 \ folder3 \ folder4 \ test-full.sha256はこの時点では構文的に使用できません。" (だからc:が欠けています)私はいくつかのエスケープ文字を見逃したり台無しにしましたか?PS:申し訳ありませんが、私はerrormessagesを翻訳しようとする必要があります。 – Moriarty

+0

1)^はforループで使用するためにパイプをエスケープすることです。ループの外側のテストバッチファイルには含めないでください。 – nephi12

関連する問題