(現在 過去ログ70 を表示中)

HOME HELP 新規作成 新着記事 トピック表示 ファイル一覧 検索 過去ログ

[ 最新記事及び返信フォームをトピックトップへ ]

■10642 / inTopicNo.1)  ZIPをコマンドラインで?
  
□投稿者/ 悲しげ -(2017/08/11(Fri) 19:41:43)
    ダイレクトに桐という訳ではないのですが、関連話題ということで
    こちらに上げさせていただきます。

    本日、Windows10の Creators Update をやってしまいました。
    あんまりしつこく出てくるので。
    そしたら(システムが何だか不安定になってるが、それはさておき)
    LZH圧縮関係が使えなくなってしまいました。(;_;)
    調べてみたら、LZHは2010年くらいから既に非推奨とされていて、
    今回Updateでばっさりと切られたことのようです。

    これまで複数の店舗で、すべてLZHで自動的にやりとりしていて、
    後述するとおり、
      Lha32.exeと言うアプリを使い、
      桐の印字コマンド→batファイル
      →シェル実行で自動処理
    ・・・てな感じでそこそこ軽快に運用できてたのだが、基となる
    UNLHA32.DLLが動かないとなるとお手上げです。
    これは困ったことになったと、先ほどから頭をかかえています。
    たまたま各店舗とも未だWindows10にはしてないはずなので、若干
    の執行猶予はあります。

    今後はZIPになる訳だが、自分で手動でやる分はZIPで構わないとして、
    LZHのように自動でやるためにZIPをコマンドラインで動かす必要がある。
    ネットでざっと見た感じでは、何だかよく判らない。

    7-Zip Extra: コマンドラインバージョン、7z形式のライブラリ、FAR Manager用のプラグイン

    というものがあるようで、試してみようかな、とか・・・

    「PowerShell v5」とか「WSH」というのも出てきて、この辺りで
    そろそろ私のキャパから溢れました。

    と言う訳で、ご助言をお願いしたく・・・

    ------------------------
    以下参考(現行LZH方式) 各パラメータの意味は後述※

    1)圧縮の方

      &LZH1="○○CSV"+&店名+".LZH"
      ・・・・
      印字開始 "Lha32-U.bat", 終了状態=&終了
       印字 "K:\Lha32.exe u -al -jpl "+&LZH1+" "+#データパス名+"*.K3"
       印字 "K:\Lha32.exe u -al -jpl "+&LZH1+" "+#データパス名+"ワク*.tbl"
      印字終了
      シェル実行 "Lha32-U.bat",同期=する,戻り値=&実行リターン,&秒

    2)圧縮の方(2)

     &選択ファイル名="○○"+#STR(&年*10000+&月*100+&日)+"bak.LZH"
     システム &DRIVE+":\Lha32.exe","u -al -jpl -o2 "+&BAK2+&選択ファイル名+" "+&BAK0, 戻り値=&実行リターン,&秒

    3)解凍の方

     &LZH="○○CSV"+&店名+".LZH"
     印字開始 "Lha32-E.bat", 終了状態=&終了
      印字 "K:\Lha32.exe e -al -xl -jpl -c0 "+#データパス名+&LZH
     印字終了
     シェル実行 "Lha32-E.bat",同期=する,戻り値=&実行リターン,&秒

    ※各パラメータは、あまり意味も判らず、どっかの記述をパクっただけなのですが
    u;書庫へのファイルの更新・追加(タイムスタンプチェック)
    -a;属性の保存等     →なくてもいい
    -jp;進捗バーの表示   →なくてもいい
    -o;LHAの旧形式対応   →なくてもいい
    e;書庫内のファイルを展開
    -x;ディレクトリを有効にする →用途的にはなくてもいい
    -c;タイムスタンプ検査を省略 →なくてもいいと思う

引用返信 [メール受信/OFF] 削除キー/
■10643 / inTopicNo.2)  Re[1]: ZIPをコマンドラインで?
□投稿者/ hidetake -(2017/08/12(Sat) 08:09:46)
    2017/08/12(Sat) 08:10:59 編集(投稿者)

    > 調べてみたら、LZHは2010年くらいから既に非推奨とされていて、
    > 今回Updateでばっさりと切られたことのようです。

    LZH は今後は使わない方が良いと思いますし、UNLHA32.DLL にも
    脆弱性がありました。

    UNLHA32.DLL は 2017/05/15 に脆弱性に対応したものが公開され
    ましたが、取りあえずは使えないのでしょうか!?

    それとも LHA32.EXE の方に問題があるかな!?

    最近は私自身も LZH は使わないので、Windows10 はあっても
    試してもおりませんが。

    UNLHA32.DLL for Win32  <May.15,2017>
    http://micco.mars.jp/mysoft/unlha32.htm


引用返信 [メール受信/OFF] 削除キー/
■10644 / inTopicNo.3)  Re[1]: ZIPをコマンドラインで?
□投稿者/ Vision Maker -(2017/08/12(Sat) 15:48:50)
    悲しげさんこんにちは。

    >   Lha32.exeと言うアプリを使い、

    私は、圧縮には Lhaplus を使っています。

    参考になると思われる?ホームページを画像で上げています。

    シェル実行を作ろうしましたが、知識不足でできませんでした。

653×560 => 250×214

1502520530.png
/71KB
引用返信 [メール受信/OFF] 削除キー/
■10645 / inTopicNo.4)  Re[2]: ZIPをコマンドラインで?
□投稿者/ 悲しげ -(2017/08/13(Sun) 22:21:53)
    No10642に返信(悲しげさんの記事)
    hidetakeさん、Vision Makerさん、コメントありがとうございます。
    (実際の試行順とは異なるのですが)話の流れ的に整理して、マトレスとさせていただきます。

    (1)
    まずhidetakeさんのNo10643
    >最新版のUNLHA32.DLL for Win32  <May.15,2017>
    おお、最新版があるのかと、早速DLして LHA3300.EXE を事項すると
    windows\system32 内の当該DLLが2017/05/15付けになっていました。
    やったね、と思いきや、私の Creators Update 後のWin10ではだめでした。
    以前は当該LZHをダブルクリックしたら中味が見えたのですが、今回はまったく無反応。

    ま、いずれはLZH方式は使わない方向としますが、LZHファイルは我が(または会社の)
    PCに莫大に存在しているので、日常運用どころか、これらを取り出せすらできない
    (LZH解凍可能なPC経由でコピペして処理するしかない)のかとガックリ。(;_;)

    (2)
    次、Vision MakerさんのNo10644
    お示しの Lhaplus をDLしてみました。
    するとダブルクリックでLZHの中味が見えました。
    が・・・見えるのみならず必ず解凍されてしまい、当該圧縮ファイル名のフォルダが
    デスクトップにどんどん増えていくのが困りモンで、「見るだけ」ってできないのかな?
    取りあえず :\Temp\解凍 なるフォルダをこさえて、そこに放り込むことにしました、

    今日はこの点でモタモタしてたのですが、
    例示のコマンドライン→バッチファイルはやれそうな気がするので、これは明日以降に
    試してみて、結果を後日報告したいと思います。

    ありがとうございました。(暫定ながら準「解決済み」)

    余談ながら、「解凍」と呼ぶのは古い人間で、今どきは「展開」と呼ぶんだそうで。(^^;)

解決済み!
引用返信 [メール受信/OFF] 削除キー/
■10646 / inTopicNo.5)  Re[2]: ZIPをコマンドラインで?
□投稿者/ hidetake -(2017/08/14(Mon) 20:51:20)
    > (1)
    > まずhidetakeさんのNo10643
    > >最新版のUNLHA32.DLL for Win32  <May.15,2017>
    > おお、最新版があるのかと、早速DLして LHA3300.EXE を事項すると
    > windows\system32 内の当該DLLが2017/05/15付けになっていました。
    > やったね、と思いきや、私の Creators Update 後のWin10ではだめでした。
    > 以前は当該LZHをダブルクリックしたら中味が見えたのですが、今回はまったく無反応。

    > ま、いずれはLZH方式は使わない方向としますが、LZHファイルは我が(または会社の)
    > PCに莫大に存在しているので、日常運用どころか、これらを取り出せすらできない
    > (LZH解凍可能なPC経由でコピペして処理するしかない)のかとガックリ。(;_;)

    LZH をダブルクリックしたと言うことは、LZH の解凍・表示を OS の
    機能に任せようとしたのですか!?
    それだと、ダメでしょうね。LZH を扱えるソフトを入れて、そして
    .LZH の関連づけをそのソフトに関連づけなければ。

    圧縮も解凍も LHA32.EXE + UNLHA32.DLL であると言うことならば
    最新の Creators Update された Windows10 でも大丈夫でしたよ。

    LHA32.EXE は、昔、使っていたものをフォルダ毎コピーしていたので
    Lha32 version 1.06 で、UNLHA32.DLL は今まで使っていなかったので
    新規に最新のものをインストールした、最新の Windows10 でも
    コマンドラインでの圧縮&解凍も可能でした。


引用返信 [メール受信/OFF] 削除キー/
■10647 / inTopicNo.6)  Re[3]: ZIPをコマンドラインで?
□投稿者/ hidetake -(2017/08/14(Mon) 21:37:28)
    蛇足ですが

    Windows で、ファイル(フォルダ)を圧縮すると言うことであれば
    Windows 自身でよく使われるのは CABファイルというのもあります。

    作成するには makecab.exe 、解凍するには expand.exe です。

    CABファイルをエクスプローラでダブルクリックすると、ファイル
    の一覧は見えるけど、その中のファイルをダブルクリックすると、
    展開先フォルダを指定しての解凍になります。

    mkecac.exe や expand.exe の使い方は、コマンドプロンプトで
    /? を付加して実行するとヘルプが表示されます。
    ネットで検索しても出てくると思います。

    Windows標準だけで済まそうとすると CABファイルかな!?

引用返信 [メール受信/OFF] 削除キー/
■10648 / inTopicNo.7)  Re[4]: ZIPをコマンドラインで?
□投稿者/ hidetake -(2017/08/15(Tue) 13:44:01)
    > Windows標準だけで済まそうとすると CABファイルかな!?

    なんと!!
    キャビネットファイルは、ディレクトリ構造をたもったまま
    データの圧縮はできませんでした。 orz

引用返信 [メール受信/OFF] 削除キー/
■10649 / inTopicNo.8)  Re[1]: ZIPをコマンドラインで?
□投稿者/ うにん -(2017/08/18(Fri) 12:21:13)
引用返信 [メール受信/OFF] 削除キー/
■10650 / inTopicNo.9)  Re[3]: ZIPをコマンドラインで?
□投稿者/ 悲しげ -(2017/08/18(Fri) 15:24:43)
    2017/08/19(Sat) 00:24:34 編集(投稿者)
    2017/08/18(Fri) 15:35:21 編集(投稿者)

    No10646に返信(hidetakeさんの記事)
    ちょっと体調が悪かったので反応が遅くなって申し訳ない。

    時々LZHをダブルクリックして中味を覗く**というのは、ま、私の癖です。
    それができなくなっていたので、全面的にアウトか!と思った次第で。

    ご教示いただいた UNLHA32.DLL for Win32 <May.15,2017> を入れて、
    桐からの前出の処理を実行したところ、無事LZH圧縮は実行出来ていました。
    解凍の方は試してないけどきっとうまくできるでしょう。
    もしかして新しいUNLHA32.DLLを入れなくてもLHa32.exe上では動いてたかも
    知れないが(^^;)、いえ、きっと動かなかったでしょう。

    ともあれ、各店でもこのLHA3300.EXEを実行してDLLを新しくしておけば、
    従前のLZHでのやりとりも、薄皮1枚で生き残るので当座はしのげることが
    判って一安心。
    ただ、これはあくまで応急処置として位置づけて、あとはZIPをコマンド
    ライン(紹介のLhaPlus)で試してみようと思います。
    が、それは後日に。

    **私の癖=圧縮ファイルをダブルクリックして覗くと(LhaPlusを入れた場合)
     直ちに解凍展開されて、デスクトップにフォルダが沢山出現するのは、
     ちょっと困りましたが。
     ビューできる場合もあるのだが、その辺りはよく判らない。

引用返信 [メール受信/OFF] 削除キー/
■10651 / inTopicNo.10)  Re[2]: ZIPをコマンドラインで?
□投稿者/ 悲しげ -(2017/08/18(Fri) 15:26:34)
    No10649に返信(うにんさんの記事)
    うにんさん、ありがとうございます。
    >Windows10の「PowerShell v5」だと、ほぼ似たような手順でできるのでは。

    みたいですね。
    でも、詳しく判らないが、これってほぼWindows10限定ですよね?
    現在対象としているのは、各店舗ともWindows7と8.1マシンで、Win10マシンは今の
    ところ私個人分だけの筈なので、ともかく共通的・汎用的な対応で考えている次第。

引用返信 [メール受信/OFF] 削除キー/
■10652 / inTopicNo.11)  Re[1]: ZIPをコマンドラインで?
□投稿者/ 悲しげ -(2017/08/20(Sun) 13:49:05)
    2017/08/20(Sun) 23:44:57 編集(投稿者)
    2017/08/20(Sun) 23:37:35 編集(投稿者)

    No10642に返信(悲しげさんの記事)

    ようやく完成(^^)v。
    やることは
    (1)あるフォルダ内の全ファイルを(日付入りで)圧縮BackUp
    (2)「*.K3」「枠組*.tbl」を圧縮更新
    (3)上記(2)を解凍する
    の3点でして、
    これまでLZHで自動処理してきたことをZIPに切り替えるというものです。

    で、まずは有名どころらしい「Lhaplus」でこれをやろうとしたところ
    *余談ながら私はこれを「エルエッチエープラス」と読んでいましたが、
     正しくは「ラプラス」と読むらしいですね。何だかポケモンを連想
     してしまった(^^;)。数学者にも居たみたい。
    (1)はちょっと戸惑いながらも何とかできました。
    (3)も簡単にできました。
    が、(2)は2日以上かけても、結局うまく行かず断念。
    このアプリは、何だかコマンドライン引数が公開されていないみたいで
    ワイルドカードが使えないのか、U(更新)指定はできないのか、等が謎。
    *「開発リソース/Windows/Lhaplusのコマンドライン引数」のURLに
     今は辿り着けない。

    次に別アプリである「7-Zip」で試すことにしました。
    そしたらこれは上記3点ともほぼ一発でうまく行きました。
    正確には「7-Zip」の中に、コマンドライン専用の「7z.exe」を使いました。
    引数等も下記に細かく記述されていたし。
    http://so-zou.jp/software/tool/file/7-zip/

    で、ここは桐の掲示板だから、これら処理を桐から自動実行する一括処理
    の記述を別稿で上げておきます。殆ど自分の備忘録っぽいですが・・・(^^;)

    後は各店舗に「7-Zip」をインストすれば汎用対応できるはず。(^^)v
    あ、念のため「UNLHA32.DLL」も更新させておこう。


引用返信 [メール受信/OFF] 削除キー/
■10653 / inTopicNo.12)  一括処理の記述概要
□投稿者/ 悲しげ -(2017/08/20(Sun) 23:40:16)
    2017/08/20(Sun) 23:59:02 編集(投稿者)

    No10652に返信(悲しげさんの記事)


    ****(1)日付入りBackUp
    var 文字列{&Program2,&BAK0,&BAK1,&BAK2,&ZIP,&BAT1,&BAT2}
    if(#ユーザ名="aaaaa")
     &Program2="""C:\Program Files (x86)\7-Zip\7z.exe"""
     &BAK0="K:\○○\*.*",&BAK1="D:\Data\Bak1\",&BAK2="K:\Bak2\"
     &BAT1="K:\○○Bak7Z1.bat",&BAT2="K:\○○Bak7Z2.bat"
    else if(#ユーザ名="bbbbb")
     &Program2="""C:\Program Files\7-Zip\7z.exe"""
     &BAK0="F:\○○\*.*",&BAK1="D:\Bak\○○\",&BAK2="F:\Bak2\"
     &BAT1="F:\○○Bak7Z1.bat",&BAT2="F:\○○Bak7Z2.bat"
    end
    &選択ファイル名="○○"+#STR(&年*10000+&月*100+&日)+"bak.ZIP"
    &ZIP=&BAK2+&選択ファイル名
    *↓まずフォルダ内全ファイルを他フォルダに丸ごとコピー
    印字開始 &BAT1, 終了状態=&実行リターン
     印字 "copy "+&BAK0+" "+&BAK1
    印字終了
    シェル実行 &BAT1,同期=する,戻り値=&実行リターン,&秒
    *↓次にフォルダ内全ファイルを別の他フォルダに日付付きで圧縮保存
    印字開始 &BAT2, 終了状態=&実行リターン
     印字 &Program2+" a -tzip "+&ZIP+" "+&BAK0
    印字終了
    シェル実行 &BAT2,同期=する,戻り値=&実行リターン,&秒


    ****(2)「*.K3」と「ワク*.tbl」を圧縮
    var 長整数{&確認,&終了}
    var 文字列{&Program,&店名,&ZIP1,&ZIP2,&BAT,&K3,&ワク}
    msgbox "確 認" \
     ,"CSV(K3)データ等を作成→デスクトップのZIPファイルを更新します。" \
     ,アイコン=i,ボタン指定=2,制御文字展開=する,&確認
    cond(&確認<>1) 終了
    *・・・・・・・・・
     *「K3書き出し」と「枠組み書き出し」で「*.K3」と「ワク*.tbl」ができる
    *・・・・・・・・・
    &店名="××店",&選択ファイル名="○○K3"+&店名+".ZIP"
    &ZIP1=#データパス名+&選択ファイル名
    &ZIP2="C:\Users\"+#ユーザ名+"\Desktop\"+&選択ファイル名
    &K3=#データパス名+"*.K3",&ワク=#データパス名+"ワク*.tbl"
    &BAT=#データパス名+"7z-U.bat"
    if(#ユーザ名="aaaaa" .or #ユーザ名="hhhhh")
     &Program="""C:\Program Files (x86)\7-Zip\7z.exe"""
    else if(#ユーザ名="bbbbb" .or #ユーザ名="ccccc")
     &Program="""C:\Program Files\7-Zip\7z.exe"""
    end
    印字開始 &BAT, 終了状態=&終了
     印字 &Program+" u -tzip "+&ZIP1+" "+&K3
     印字 &Program+" u -tzip "+&ZIP1+" "+&ワク
     *印字 &Program+" u -tzip "+&ZIP1+" -i!"+&K3+" -i!"+&ワク
     *の1行だけでもいいかもしれない(試してないけど)
    印字終了
    シェル実行 &BAT,同期=する,戻り値=&実行リターン,&秒
    if(&秒<>0)
     確認 "ZIP圧縮に失敗したようです。再実行を"
    else   /*デスクトップにコピー*/
     ファイル複写 &ZIP1,&ZIP2,終了状態=&実行リターン
    end


    ****(3)上記ZIPを解凍
    var 長整数{&確認,&終了}
    var 文字列{&Program,&ZIP,&BAT,&店名}
    &店名="××店",&選択ファイル名="○○K3"+&店名+".ZIP"
    &ZIP=#データパス名+&選択ファイル名,&BAT=#データパス名+"7z-E.bat"
    if(#ユーザ名="aaaaa" .or #ユーザ名="hhhhh")
     &Program="""C:\Program Files (x86)\7-Zip\7z.exe"""
    else if(#ユーザ名="bbbbb" .or #ユーザ名="ccccc")
     &Program="""C:\Program Files\7-Zip\7z.exe"""
    end
    印字開始 &BAT, 終了状態=&終了
     印字 &Program+" x "+&ZIP
    印字終了
    シェル実行 &BAT,同期=する,戻り値=&実行リターン,&秒
    if(&秒<>0)
     確認 "ZIP解凍に失敗したようです。再実行を"
     return
    end

解決済み!
引用返信 [メール受信/OFF] 削除キー/
■10654 / inTopicNo.13)  Re[3]: 一括処理の記述概要
□投稿者/ Vision Maker -(2017/08/27(Sun) 12:15:18)
    悲しげさんこんにちは。

    いつもすてきなプログラムを公開してくださり、感謝しています。


    私はWindows10で桐10を使用しています。

    印字開始 &BAT1, 終了状態=&実行リターン

    の部分では、文字コード(形式)を変える必要があるかもしれません。

    印字開始 &BAT1,SJIS出力 = する,終了状態=&実行リターン

    自分のパソコンでもこのバッチファイルで圧縮できました。

    桐で初めてバッチファイルを使いましたが、いいですね。
引用返信 [メール受信/OFF] 削除キー/
■10655 / inTopicNo.14)  Re[4]: 一括処理の記述概要
□投稿者/ 悲しげ -(2017/08/28(Mon) 23:19:35)
    No10654に返信(Vision Makerさんの記事)
    どもっ、Vision Makerさん

    >印字開始 &BAT1,SJIS出力 = する,終了状態=&実行リターン

    そうですか、桐10だとこうなるんですね。(メモメモ)

    リファレンスによると

    >SJIS出力 = しない|する
    >出力するテキストファイルの文字コードをUTF-16にする場合は「しない」、シフトJISにする場合は「する」を指定します。

    ということは、省略したらUTF-16で出力されるってことなんでしょうね。
    う〜ん、よく判らないが、私の場合これまでほぼSJISで処理してきたんだから、
    やはりそのように指定した方が無難ということかも。

引用返信 [メール受信/OFF] 削除キー/



トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

Mode/  Pass/

HOME HELP 新規作成 新着記事 トピック表示 ファイル一覧 検索 過去ログ

- Child Tree -
- Antispam Version -