X



【.cmd】 バッチファイルスクリプト %12 【.bat】©2ch.net
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん 転載ダメ©2ch.net
垢版 |
2017/03/11(土) 13:47:11.66ID:2LSSeyH1
拡張子が .cmd または .bat のバッチファイルのスクリプティング(プログラミング)に関わる
質問,テクニック(JScript,Perl等の埋め込みなど含む),関連情報のためのスレです。

※何でも無理矢理バッチでやろうとせず、WSH等の使用も検討しましょう。
前スレ
【.cmd】 バッチファイルスクリプト %11 【.bat】©2ch.net
http://echo.2ch.net/test/read.cgi/tech/1424858999/

それ以前の過去スレ
%10 http://peace.2ch.net/test/read.cgi/tech/1374205515/
%9  http://toro.2ch.net/test/read.cgi/tech/1335015478/
%8  http://toro.2ch.net/test/read.cgi/tech/1315844420/
%7  http://hibari.2ch.net/test/read.cgi/tech/1298873550/
%6  http://hibari.2ch.net/test/read.cgi/tech/1277465356/
%5  http://pc12.2ch.net/test/read.cgi/tech/1242268171/
%4  http://pc12.2ch.net/test/read.cgi/tech/1229955189/
%3  http://pc11.2ch.net/test/read.cgi/tech/1217860043/
%2  http://pc12.2ch.net/test/read.cgi/tech/1197881068/
%1  http://pc11.2ch.net/test/read.cgi/tech/1178281991/
0953デフォルトの名無しさん
垢版 |
2018/11/06(火) 10:53:18.93ID:XCQlzVed
標準インストールされてるという以外に長所はないよなぁ
0954デフォルトの名無しさん
垢版 |
2018/11/06(火) 11:06:43.59ID:OYWwvpi1
今のWindowsなら、Powerchell?、WSH?なら、標準インストールされているが・・・・。
以前なら、REXX(PC-DOS)とか、QBASICあたり?

でも、使い物になるのは・・・・。
0957デフォルトの名無しさん
垢版 |
2018/11/06(火) 15:53:15.52ID:4bA2Iy3p
>>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)"
オペランドがありません。
0959デフォルトの名無しさん
垢版 |
2018/11/06(火) 16:35:24.41ID:4bA2Iy3p
遅延変数が無くても
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 になってると思う
0960デフォルトの名無しさん
垢版 |
2018/11/06(火) 16:48:03.38ID:4bA2Iy3p
遅延無しの環境では二重引用符だけでエスケープは要らないようだ
>cmd /v:off
>set /a "a=!(123^123)"
1
>
0961デフォルトの名無しさん
垢版 |
2018/11/07(水) 07:55:29.42ID:BI4/Q6Ue
遅延モードでは式の中に ! 文字があると展開の処理が違うんだろう。
だから ^ 文字の扱いも変化する。
0962デフォルトの名無しさん
垢版 |
2018/11/08(木) 07:17:29.99ID:9iJL9tpZ
@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使えば簡単だけど
0963デフォルトの名無しさん
垢版 |
2018/11/09(金) 09:53:58.29ID:3Y5lMbnv
%~nx0 が変だ

>dir /b
test.bat

>type test.bat
@echo file="%~nx0"

>test
file="test.bat"

>"test"
file="test"

>
0964デフォルトの名無しさん
垢版 |
2018/11/09(金) 11:09:53.39ID:3Y5lMbnv
どうも先頭の引用符が怪しい

>.\"test"
file="test.bat"

>test"
file="test.bat"

>"test
file="test"

>
0967デフォルトの名無しさん
垢版 |
2018/11/09(金) 21:20:20.98ID:3Y5lMbnv
>t"E"s"T"
file="test.bat"

>"t"E"s"T"
file="t"E"s"T"

先頭が引用符だと
%~nx0 は入力丸写しの
拡張子無視のバカ仕様らしい
0968デフォルトの名無しさん
垢版 |
2018/11/14(水) 01:02:30.37ID:fbx51wpG
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 の中のファイルは拡張子が消えた状態になってしまいます。
ファイル名から元の拡張子を消し、中のファイルは拡張子を残したままってどこを変えればよいのでしょうか?
0970デフォルトの名無しさん
垢版 |
2018/11/14(水) 06:39:30.75ID:vPR2E9Wi
-txz だと書庫のヘッダににファイル名の情報は無い
書庫名を変えて開くと中のファイル名も同じく変わるだけ
中身は同じ
0971デフォルトの名無しさん
垢版 |
2018/11/14(水) 06:57:09.62ID:JBsUV7Ak
要するにxzファイルフォーマットの限界だな。ファイル名を保持する機能が無い
0976デフォルトの名無しさん
垢版 |
2018/11/15(木) 04:24:41.49ID:MW4yWYe4
>>968 が何をしたいのか分からん。
-txz なのに拡張子が .7z になってる。
なぜ .xz にしないのか。
0981デフォルトの名無しさん
垢版 |
2018/11/20(火) 03:39:49.15ID:rmOcRzV5
lzhは脆弱性があるから使うべきではない
zip一択
DOSで使えるzipアプリがあるかどうかは知らん
0982デフォルトの名無しさん
垢版 |
2018/11/20(火) 06:48:32.61ID:TCh3BaRv
>>981
> lzhは脆弱性があるから使うべきではない
脆弱性は対策されてるよ
使用しない方がいいと言うのはlzhの脆弱性じゃなくてアンチウイルスソフトが対応しないから
0983デフォルトの名無しさん
垢版 |
2018/11/20(火) 09:38:17.04ID:O/AOgigh
そもそもアンチウィルスソフトに対応してもらえないってのが脆弱性でしょ。

事実上公式最新版のUNLHA.DLLはソース非公開で
ソース公開してる古いDOS版はヘッダ構造体がサイズ固定で静的に確保されてるから、
例えばDOSでは考慮しなくて良かった数千文字の
長いファイル名があるとバッファオーバーランを引き起こす。
アンチウィルスソフトによってはDOS版のソースを使ってるので
バッファオーバーランを発生させるようなヘッダを不正扱いして
該当書庫のそれ以降の圧縮ファイルの検査をスルーするものがあるが、
そのような検査されない圧縮ファイルであっても事実上公式のUNLHA.DLLでは解凍できてしまう。
検査はされないが解凍できてしまうようなファイルにウィルスしこまれたら大変ってのが「脆弱性」なわけ。
アンチウィルスソフトが対応してくれないなら脆弱性は対策されてるとは言えないっしょ。

対処法は誰かが移植性の高いソースコードを書いて公開するぐらいしかないよーな。
0984デフォルトの名無しさん
垢版 |
2018/11/20(火) 21:31:14.05ID:9NuM4Bsa
>>983
どっちもねーよアホンダラ。
LHA は日本独自の圧縮アルゴリズム&zipに追い越された。
いわゆるガラパゴス技術。いらん。
数年前まで役所が .lzh とかで何かしら添付ファイル送ってくることがあって文句付けようかと思ったことがある。
0985デフォルトの名無しさん
垢版 |
2018/11/20(火) 22:34:45.84ID:7AOElbkD
>>983
今時16bit環境なんかで使ってる奴いないだろ
unlha32.dllは脆弱性の対策されてるから言いがかりレベル
0989デフォルトの名無しさん
垢版 |
2018/11/21(水) 00:32:47.70ID:dG4a7MEF
>>985
unlha32.dllが対策したのはバッファーオーバーランそのものについてだけ、ね。

>>983のは、同じ書庫データなのにソフトによって取り扱い方に違いができてしまった事が原因で、
言わば仕様とかlzhのエコシステム全体の不具合だから
unlha32.dllだけ対策しました、アンチウイルスソフトが対策しねーのが悪いって喚いてもしょうがないのよ。
0990デフォルトの名無しさん
垢版 |
2018/11/21(水) 06:43:17.14ID:sFoC6dAL
>>989
馬鹿なの?
そんなのlhzに限らずどんな書庫ファイルでも同じだろ
単にアンチウイルスソフトが対応しなかっだけの話
まあグローバルに展開してるマカフィーやシマンテックから見たら極東でちょっと流行ってただけのファイルフォーマットにいちいち対応してられるかよって思うのも無理はないわな
0991デフォルトの名無しさん
垢版 |
2018/11/21(水) 08:07:38.87ID:dG4a7MEF
>>990
いや、lzhのヘッダは安全性そっちのけで拡張性と互換性を優先した結果、
論理的な最大ヘッダサイズが4ギガバイト(要するに制限がない)とか酷い事になってるからねぇ……

例えば最大で64キロバイト程度のzipなんかと同等に並べるのはちょっと無理じゃねーかと。
0993デフォルトの名無しさん
垢版 |
2018/11/21(水) 09:46:53.64ID:sFoC6dAL
>>991
それの何が問題なんだ?
まさか4GBのメモーがないとヘッダーが読めないとか思ってるのか? w
0994デフォルトの名無しさん
垢版 |
2018/11/21(水) 09:50:12.82ID:sFoC6dAL
>>992
だからウィルス対策ソフトが対応してないって話だろ
何回ループすれば理解できるんだよ w
0995デフォルトの名無しさん
垢版 |
2018/11/21(水) 11:07:43.06ID:dG4a7MEF
>>993
おいおい……

64キロバイトを一括でメモリに読み込んで処理すんのと
4ギガバイトを逐次読み込んで処理しなきゃいけないのとでは
実装の難易度もコストも全然違うんだけど……

初心者でもわかりやすいところで言えば
64キロバイトの方はメモリが潤沢にあれば静的なメモリ確保でもいいけど
4ギガバイトの方は普通は動的なメモリ確保が必須になるし。
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 619日 22時間 49分 43秒
10021002
垢版 |
Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/

▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。

ニューススポーツなんでも実況