【.cmd】 バッチファイルスクリプト %12 【.bat】©2ch.net
レス数が1000を超えています。これ以上書き込みはできません。
標準インストールされてるという以外に長所はないよなぁ 今のWindowsなら、Powerchell?、WSH?なら、標準インストールされているが・・・・。
以前なら、REXX(PC-DOS)とか、QBASICあたり?
でも、使い物になるのは・・・・。 QBASICは中身がないので別途買わないと動かないよ >>951
!を取って
set /a "b=(5^^5)"
では
オペランドがありません。
0
って出るのは何故? >>956
謎ですねえ
>cmd /v:on
>set n=!
>set /a "a=!n!(123^456)"
0
>set /a "a=!n!(123^^456)"
0
>set /a "a=!n!(123^^^456)"
0
>set /a "a=!n!(123^^^^456)"
オペランドがありません。
>set /a "a=(123^456)"
435
>set /a "a=(123^^456)"
オペランドがありません。 遅延変数が無くても
NOT演算がある時に再エスケープ(^^)が必要みたいね
>cmd /v:on
>set /a "a=!(123^123)"
0
>set /a "a=!(123^^123)"
1
>set /a "a=(123^123)"
0
>set /a "a=(123^456)"
435
>
一番上の式は !(123123) で 0 になってると思う 遅延無しの環境では二重引用符だけでエスケープは要らないようだ
>cmd /v:off
>set /a "a=!(123^123)"
1
> 遅延モードでは式の中に ! 文字があると展開の処理が違うんだろう。
だから ^ 文字の扱いも変化する。 @ECHO OFF
REM 単項演算子 ! を使用しないNOT演算
SETLOCAL ENABLEDELAYEDEXPANSION
FOR /L %%I IN (-3,1,3) DO (
SET /A A=%%I
SET /A "B=~(A|-A)>>31&1"
ECHO A=!A! , NOT A=!B!
)
PAUSE
IF使えば簡単だけど %~nx0 が変だ
>dir /b
test.bat
>type test.bat
@echo file="%~nx0"
>test
file="test.bat"
>"test"
file="test"
> どうも先頭の引用符が怪しい
>.\"test"
file="test.bat"
>test"
file="test.bat"
>"test
file="test"
> >t"E"s"T"
file="test.bat"
>"t"E"s"T"
file="t"E"s"T"
先頭が引用符だと
%~nx0 は入力丸写しの
拡張子無視のバカ仕様らしい 7z の個別連続圧縮のやり方を教えてください。
あまり詳しくなくてネットを見て見よう見まねで作ったので自分でもよく分かってません。
@echo off
set exe7z="C:\Program Files\7-Zip\7z.exe"
:start
if "%~1"=="" exit /b
%exe7z% a -r -mmt=on -mx=9 -ssw -txz "%~dpnx1.7z" "%~1"
shift
goto start
このままだと作成された 7z のファイル名に元ファイルの拡張子が付いてしまいます。
dpn1 だとファイル名の拡張子は消えるけど、作成された 7z の中のファイルは拡張子が消えた状態になってしまいます。
ファイル名から元の拡張子を消し、中のファイルは拡張子を残したままってどこを変えればよいのでしょうか? 単に7zipのcliコマンドオプションの使い方で、バッチと関係ないなあ... -txz だと書庫のヘッダににファイル名の情報は無い
書庫名を変えて開くと中のファイル名も同じく変わるだけ
中身は同じ 要するにxzファイルフォーマットの限界だな。ファイル名を保持する機能が無い xzじゃないとダメなの?
zipやrarや7zにしちゃダメなの? >>968 が何をしたいのか分からん。
-txz なのに拡張子が .7z になってる。
なぜ .xz にしないのか。 ところで、結局、DOSでの圧縮はどの形式がおすすめ? lzhは脆弱性があるから使うべきではない
zip一択
DOSで使えるzipアプリがあるかどうかは知らん >>981
> lzhは脆弱性があるから使うべきではない
脆弱性は対策されてるよ
使用しない方がいいと言うのはlzhの脆弱性じゃなくてアンチウイルスソフトが対応しないから そもそもアンチウィルスソフトに対応してもらえないってのが脆弱性でしょ。
事実上公式最新版のUNLHA.DLLはソース非公開で
ソース公開してる古いDOS版はヘッダ構造体がサイズ固定で静的に確保されてるから、
例えばDOSでは考慮しなくて良かった数千文字の
長いファイル名があるとバッファオーバーランを引き起こす。
アンチウィルスソフトによってはDOS版のソースを使ってるので
バッファオーバーランを発生させるようなヘッダを不正扱いして
該当書庫のそれ以降の圧縮ファイルの検査をスルーするものがあるが、
そのような検査されない圧縮ファイルであっても事実上公式のUNLHA.DLLでは解凍できてしまう。
検査はされないが解凍できてしまうようなファイルにウィルスしこまれたら大変ってのが「脆弱性」なわけ。
アンチウィルスソフトが対応してくれないなら脆弱性は対策されてるとは言えないっしょ。
対処法は誰かが移植性の高いソースコードを書いて公開するぐらいしかないよーな。 >>983
どっちもねーよアホンダラ。
LHA は日本独自の圧縮アルゴリズム&zipに追い越された。
いわゆるガラパゴス技術。いらん。
数年前まで役所が .lzh とかで何かしら添付ファイル送ってくることがあって文句付けようかと思ったことがある。 >>983
今時16bit環境なんかで使ってる奴いないだろ
unlha32.dllは脆弱性の対策されてるから言いがかりレベル 純粋なDOS(16bit)を使っててウィルスが怖いなんて思う人いるのか >>987
いやだからDOSを狙ったウィルスなんかが今時流通してるって思うのかってことさ >>985
unlha32.dllが対策したのはバッファーオーバーランそのものについてだけ、ね。
>>983のは、同じ書庫データなのにソフトによって取り扱い方に違いができてしまった事が原因で、
言わば仕様とかlzhのエコシステム全体の不具合だから
unlha32.dllだけ対策しました、アンチウイルスソフトが対策しねーのが悪いって喚いてもしょうがないのよ。 >>989
馬鹿なの?
そんなのlhzに限らずどんな書庫ファイルでも同じだろ
単にアンチウイルスソフトが対応しなかっだけの話
まあグローバルに展開してるマカフィーやシマンテックから見たら極東でちょっと流行ってただけのファイルフォーマットにいちいち対応してられるかよって思うのも無理はないわな >>990
いや、lzhのヘッダは安全性そっちのけで拡張性と互換性を優先した結果、
論理的な最大ヘッダサイズが4ギガバイト(要するに制限がない)とか酷い事になってるからねぇ……
例えば最大で64キロバイト程度のzipなんかと同等に並べるのはちょっと無理じゃねーかと。 >>991
それの何が問題なんだ?
まさか4GBのメモーがないとヘッダーが読めないとか思ってるのか? w >>992
だからウィルス対策ソフトが対応してないって話だろ
何回ループすれば理解できるんだよ w >>993
おいおい……
64キロバイトを一括でメモリに読み込んで処理すんのと
4ギガバイトを逐次読み込んで処理しなきゃいけないのとでは
実装の難易度もコストも全然違うんだけど……
初心者でもわかりやすいところで言えば
64キロバイトの方はメモリが潤沢にあれば静的なメモリ確保でもいいけど
4ギガバイトの方は普通は動的なメモリ確保が必須になるし。 >>995
で、何が問題なの?
自分には実装できねーから糞だって話か? w そもそも動的メモリー確保が難しいとかどんだけレベル低いんだよ w と言う事でバカの頭に脆弱性があっただけ
終わり w このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 619日 22時間 49分 43秒 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php レス数が1000を超えています。これ以上書き込みはできません。