
Windows版のgzipについて
os:win xp-pro
gzip「http://www.gzip.org/」 windows版で
標準入力からの情報を圧縮しようとするとおかしくなります。
以前にpostgresからのダンプ圧縮としてマニュアルに載っているコマンド(linux用)をWindowsでも出来ないかと質問させて頂いたところ、
gzipのWindows版を紹介して頂きました。
<ダンプ圧縮コマンド>
pg_dump dbname | gzip > filename.gz
<試行1>
Windows版のgzipをインストール後、試してみました。
pg_dump.exe --host=localhost --username=postgres template1 | gzip.exe > C:?Temp?test_dump.gz
しかし、C:?Temp?test_dump.gzを解凍できません。
一旦、テキストで出した後、改めて圧縮すると解凍できます。
pg_dump.exe --host=localhost --username=postgres template1 > C:?Temp?test_dump
gzip.exe C:?Temp?test_dump
<試行2>
一旦、postgresの事は忘れて、適当なテキストファイルを用意し、標準入力から圧縮しました。
type c:?temp?test.txt | gzip.exe > c:?temp?test.txt.gz
結果は、やはり解凍できません。
シンプルに圧縮してみました。
gzip.exe c:?temp?test.txt
c:?temp?test.txt.gzを解凍する事ができました。
どうしたものでしょうか?
何かやり方が悪いのでしょうか?
No.2ベストアンサー
- 回答日時:
こちらでは、まったく再現しません。
正常に動作しています。正直、どうなってるかわかりません。
・type c:\temp\test.txt | gzip.exe > c:\temp\test.txt.gz
としたときの test.txt.gzをバイナリエディタで開いてみたり、 linuxにバイナリ転送→fileコマンドで識別してみたりして、どんな出力になっているかを確認する。
・CygwinやMinGWを使ってみる
位しか思いつきません。
・実験環境
XP SP3 32bit
PATH=C:\WINDOWS;C:\WINDOWS\SYSTEM32
として、なるべく他の影響を遮断
・実験内容
gzip -v9 ファイル (ファイルを置き換える)
gzip -v9c ファイル > ファイル.gz (入力指定、標準出力へ)
gzip -v9c < ファイル > ファイル.gz (標準入力から、標準出力へ)
type ファイル | gzip -v9c > ファイル.gz (パイプから入力)
の4つを実行。gzipはフルパスで指定。
ファイルにはgzip for Windwos 1.3.12のChangelog(テキスト)とgzip.exe(バイナリ)をリネームして使用
-l,-tオプションでの確認と、Cygwinのgzipを使用しての伸長後との比較
→すべての条件で-l,-t問題なし。伸長後も圧縮前と一致。
念の為、1.2.4, 1.3.12両方でやってみましたが、同じ結果でした。
「こちらでは、まったく再現しません。正常に動作しています。」という回答に、もしやと思い、cmd.exeを起動し、そこから実行しました。
すると、うまくいきました。
書き忘れていましたが、Windows PowerShellから実行していました。
Windows PowerShellから・・・NG
コマンドプロンプトから・・・OK
という結果です。
type c:\temp\test.txt | gzip.exe > c:\temp\test.txt.gz
をtest.batに保存し、
PowerShellからtest.batを実行すると正しく動作しました。
gzipというよりPowerShellの問題のようです。
わざわざ検証していただき、本当にありがとうございます。
No.3
- 回答日時:
Unix 環境の cat 相当の処理をしたいのだと思いますが、
type は cat ではないのでバイナリファイルをうまく扱えず、
結果としてパイプを通して gzip に渡せていないように思います。
対策としては cat を使えるように cygwin や msys 環境を作るか、
単独で cat 相当のコマンドを導入することになります。
パイプに拘るのであれば、cygwin か msys を導入するのを提案します。
No.1
- 回答日時:
標準出力へ出力する -c オプションと、標準入力から入力を表わす - を付けたらどうなりますか?
type c:\temp\test.txt | gzip.exe -c - > c:\temp\test.txt.gz
この回答への補足
だめです。
同じ事になります。
gzip test.txt というシンプルな使いかた以外では全く成功しません。
ちなみに成功した場合は正しく解凍できますが、圧縮に失敗した場合、
test.txt.gz: not in gzip format
となります。
左から入れられないなら、windowsにわざわざgzipを入れる意味が無いですし、どうしたものかという感じです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Google Drive Googleドライブでのファイルの移動 2 2022/11/01 14:23
- オープンソース Coinmarketcap api 1 2022/05/30 15:47
- Mac OS PATHを使ってcdなどで簡単に移動できるようになりたい 3 2023/05/13 14:22
- Windows 8 tempフォルダ全消ししていい? 3 2022/12/31 12:49
- その他(開発・運用・管理) WindowsからSSHでサーバーにあるファイルをダウンロードできない…。 3 2022/04/24 11:08
- Visual Basic(VBA) vb.net webからダウンロードできない 3 2023/04/23 18:16
- マルウェア・コンピュータウイルス トロイの木馬が検出されました。 1 2022/06/12 22:09
- ネットワーク 家庭内LANの2台のPC間で「ネットワーク資格情報の入力」で引っかかってフォルダが共有できない 1 2022/12/11 23:37
- その他(コンピューター・テクノロジー) どうすればExpressZip圧縮ソフトで再びpdfを圧縮、閲覧できますか? 4 2022/06/11 14:47
- その他(ソフトウェア) Winrarの移行 1 2023/02/26 08:31
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
バッチ処理でファイルの中身を...
-
.txtではなく.logの方が良いの...
-
VBAでワークシートを引数として...
-
多数のサブディレクトリ内のフ...
-
テキストファイルで提出とは?
-
ファイル内容の修正、行削除に...
-
リモートのファイル存在確認
-
psqlでエラーログをとりたい
-
ファイル名の一部をbatで変更し...
-
forコマンドのdelimsオプション...
-
Windowsのバッチファイルを利用...
-
renameコマンドについて
-
エクセルの各セルの内容をそれ...
-
ファイルを処理中に次の処理に...
-
VBSでフォルダ内のテキストファ...
-
Windows マシンでFTPバッチが動...
-
Excel VBAの文字列と数値の分類
-
バッチファイル 複数ファイル...
-
cshでファイルサイズ取得
-
バッチ(bat)でリストファイルか...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッチ処理でファイルの中身を...
-
拡張子を元に戻す
-
.txtではなく.logの方が良いの...
-
VBAでワークシートを引数として...
-
多数のサブディレクトリ内のフ...
-
psqlでエラーログをとりたい
-
COPYコマンドで結合すると余計...
-
エクセルの各セルの内容をそれ...
-
バッチファイルで文字列削除に...
-
ファイルの最後に文字列挿入
-
UWSCでテキストファイルを開い...
-
バッチファイル 複数ファイル...
-
renameコマンドについて
-
ファイル名の一部をbatで変更し...
-
forfilesで検索したファイルを...
-
外部exeに対しての引数受け渡し
-
Windowsのバッチファイルを利用...
-
VBSでフォルダ内のテキストファ...
-
VBAでエクセルをtxtに変換する...
-
ExcelVBA テキストファイルUNIC...
おすすめ情報