【.cmd】 バッチファイルスクリプト %12 【.bat】©2ch.net

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん 転載ダメ©2ch.net2017/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/

0952デフォルトの名無しさん2018/11/06(火) 08:19:38.89ID:NUZ4yNuE
言語仕様に謎が多すぎて業務に使うには怖い

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あたり?

でも、使い物になるのは・・・・。

0955デフォルトの名無しさん2018/11/06(火) 11:25:34.30ID:CgLejKNb
QBASICは中身がないので別途買わないと動かないよ

0956デフォルトの名無しさん2018/11/06(火) 14:54:37.43ID:7wQVLanf
>>951
!を取って
set /a "b=(5^^5)"
では
オペランドがありません。
0
って出るのは何故?

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)"
オペランドがありません。

0958デフォルトの名無しさん2018/11/06(火) 15:56:47.52ID:4bA2Iy3p
たぶん式に遅延変数があると2回展開してるんじゃ?

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"

>

0965デフォルトの名無しさん2018/11/09(金) 17:30:33.44ID:3Y5lMbnv
>te"st
file="test.bat"

0966デフォルトの名無しさん2018/11/09(金) 19:53:31.92ID:BPg47oOK
test.exe.bat

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 の中のファイルは拡張子が消えた状態になってしまいます。
ファイル名から元の拡張子を消し、中のファイルは拡張子を残したままってどこを変えればよいのでしょうか?

0969デフォルトの名無しさん2018/11/14(水) 06:32:53.24ID:JBsUV7Ak
単に7zipのcliコマンドオプションの使い方で、バッチと関係ないなあ...

0970デフォルトの名無しさん2018/11/14(水) 06:39:30.75ID:vPR2E9Wi
-txz だと書庫のヘッダににファイル名の情報は無い
書庫名を変えて開くと中のファイル名も同じく変わるだけ
中身は同じ

0971デフォルトの名無しさん2018/11/14(水) 06:57:09.62ID:JBsUV7Ak
要するにxzファイルフォーマットの限界だな。ファイル名を保持する機能が無い

0972デフォルトの名無しさん2018/11/14(水) 07:10:28.19ID:vPR2E9Wi
だから複数ファイルの圧縮も出来ない

0973デフォルトの名無しさん2018/11/15(木) 02:26:56.15ID:/pNu0fIl
できないのか。残念。

0974デフォルトの名無しさん2018/11/15(木) 03:44:20.67ID:sPg3U71k
xzじゃないとダメなの?
zipやrarや7zにしちゃダメなの?

0975デフォルトの名無しさん2018/11/15(木) 04:23:57.43ID:eQKfIPvp
反応遅っっw

0976デフォルトの名無しさん2018/11/15(木) 04:24:41.49ID:MW4yWYe4
>>968 が何をしたいのか分からん。
-txz なのに拡張子が .7z になってる。
なぜ .xz にしないのか。

0977デフォルトの名無しさん2018/11/19(月) 19:31:45.62ID:qVZWX1fW
ところで、結局、DOSでの圧縮はどの形式がおすすめ?

0978デフォルトの名無しさん2018/11/19(月) 20:03:49.96ID:Qq88xGOU
DOSなんてもう使ってないし

0979デフォルトの名無しさん2018/11/19(月) 20:26:27.04ID:8P0ZFwQc
>>977
lzh 一択

0980デフォルトの名無しさん2018/11/19(月) 23:22:31.08ID:uf9ZfFD/
>>979
右に同じ

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は脆弱性の対策されてるから言いがかりレベル

0986デフォルトの名無しさん2018/11/20(火) 22:42:17.88ID:U4aYcO/c
純粋なDOS(16bit)を使っててウィルスが怖いなんて思う人いるのか

0987デフォルトの名無しさん2018/11/20(火) 22:44:33.63ID:htpgQQTF
win95か98だとしたら背筋が凍る

0988デフォルトの名無しさん2018/11/20(火) 22:50:05.05ID:U4aYcO/c
>>987
いやだからDOSを狙ったウィルスなんかが今時流通してるって思うのかってことさ

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なんかと同等に並べるのはちょっと無理じゃねーかと。

0992デフォルトの名無しさん2018/11/21(水) 09:43:13.45ID:nqncv/qX

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ギガバイトの方は普通は動的なメモリ確保が必須になるし。

0996デフォルトの名無しさん2018/11/21(水) 11:11:51.13ID:guoVPW2S

0997デフォルトの名無しさん2018/11/21(水) 11:49:46.67ID:eSuVM7gW

0998デフォルトの名無しさん2018/11/21(水) 12:29:53.03ID:sFoC6dAL
>>995
で、何が問題なの?
自分には実装できねーから糞だって話か? w

0999デフォルトの名無しさん2018/11/21(水) 12:35:19.04ID:sFoC6dAL
そもそも動的メモリー確保が難しいとかどんだけレベル低いんだよ w

1000デフォルトの名無しさん2018/11/21(水) 12:36:54.21ID:sFoC6dAL
と言う事でバカの頭に脆弱性があっただけ
終わり w

10011001Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 619日 22時間 49分 43秒

10021002Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


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

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

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

▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php

レス数が1000を超えています。これ以上書き込みはできません。