2ちゃんねる スマホ用 ■掲示板に戻る■ 全部 1- 最新50    

■ このスレッドは過去ログ倉庫に格納されています

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

1 :デフォルトの名無しさん:2017/03/11(土) 13:47:11.66 ID:2LSSeyH1.net
拡張子が .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/

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

953 :デフォルトの名無しさん:2018/11/06(火) 10:53:18.93 ID:XCQlzVed.net
標準インストールされてるという以外に長所はないよなぁ

954 :デフォルトの名無しさん:2018/11/06(火) 11:06:43.59 ID:OYWwvpi1.net
今のWindowsなら、Powerchell?、WSH?なら、標準インストールされているが・・・・。
以前なら、REXX(PC-DOS)とか、QBASICあたり?

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

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

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

957 :デフォルトの名無しさん:2018/11/06(火) 15:53:15.52 ID:4bA2Iy3p.net
>>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)"
オペランドがありません。

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

959 :デフォルトの名無しさん:2018/11/06(火) 16:35:24.41 ID:4bA2Iy3p.net
遅延変数が無くても
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 になってると思う

960 :デフォルトの名無しさん:2018/11/06(火) 16:48:03.38 ID:4bA2Iy3p.net
遅延無しの環境では二重引用符だけでエスケープは要らないようだ
>cmd /v:off
>set /a "a=!(123^123)"
1
>

961 :デフォルトの名無しさん:2018/11/07(水) 07:55:29.42 ID:BI4/Q6Ue.net
遅延モードでは式の中に ! 文字があると展開の処理が違うんだろう。
だから ^ 文字の扱いも変化する。

962 :デフォルトの名無しさん:2018/11/08(木) 07:17:29.99 ID:9iJL9tpZ.net
@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使えば簡単だけど

963 :デフォルトの名無しさん:2018/11/09(金) 09:53:58.29 ID:3Y5lMbnv.net
%~nx0 が変だ

>dir /b
test.bat

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

>test
file="test.bat"

>"test"
file="test"

>

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

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

>test"
file="test.bat"

>"test
file="test"

>

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

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

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

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

先頭が引用符だと
%~nx0 は入力丸写しの
拡張子無視のバカ仕様らしい

968 :デフォルトの名無しさん:2018/11/14(水) 01:02:30.37 ID:fbx51wpG.net
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 の中のファイルは拡張子が消えた状態になってしまいます。
ファイル名から元の拡張子を消し、中のファイルは拡張子を残したままってどこを変えればよいのでしょうか?

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

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

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

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

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

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

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

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

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

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

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

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

981 :デフォルトの名無しさん:2018/11/20(火) 03:39:49.15 ID:rmOcRzV5.net
lzhは脆弱性があるから使うべきではない
zip一択
DOSで使えるzipアプリがあるかどうかは知らん

982 :デフォルトの名無しさん:2018/11/20(火) 06:48:32.61 ID:TCh3BaRv.net
>>981
> lzhは脆弱性があるから使うべきではない
脆弱性は対策されてるよ
使用しない方がいいと言うのはlzhの脆弱性じゃなくてアンチウイルスソフトが対応しないから

983 :デフォルトの名無しさん:2018/11/20(火) 09:38:17.04 ID:O/AOgigh.net
そもそもアンチウィルスソフトに対応してもらえないってのが脆弱性でしょ。

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

対処法は誰かが移植性の高いソースコードを書いて公開するぐらいしかないよーな。

984 :デフォルトの名無しさん:2018/11/20(火) 21:31:14.05 ID:9NuM4Bsa.net
>>983
どっちもねーよアホンダラ。
LHA は日本独自の圧縮アルゴリズム&zipに追い越された。
いわゆるガラパゴス技術。いらん。
数年前まで役所が .lzh とかで何かしら添付ファイル送ってくることがあって文句付けようかと思ったことがある。

985 :デフォルトの名無しさん:2018/11/20(火) 22:34:45.84 ID:7AOElbkD.net
>>983
今時16bit環境なんかで使ってる奴いないだろ
unlha32.dllは脆弱性の対策されてるから言いがかりレベル

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

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

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

989 :デフォルトの名無しさん:2018/11/21(水) 00:32:47.70 ID:dG4a7MEF.net
>>985
unlha32.dllが対策したのはバッファーオーバーランそのものについてだけ、ね。

>>983のは、同じ書庫データなのにソフトによって取り扱い方に違いができてしまった事が原因で、
言わば仕様とかlzhのエコシステム全体の不具合だから
unlha32.dllだけ対策しました、アンチウイルスソフトが対策しねーのが悪いって喚いてもしょうがないのよ。

990 :デフォルトの名無しさん:2018/11/21(水) 06:43:17.14 ID:sFoC6dAL.net
>>989
馬鹿なの?
そんなのlhzに限らずどんな書庫ファイルでも同じだろ
単にアンチウイルスソフトが対応しなかっだけの話
まあグローバルに展開してるマカフィーやシマンテックから見たら極東でちょっと流行ってただけのファイルフォーマットにいちいち対応してられるかよって思うのも無理はないわな

991 :デフォルトの名無しさん:2018/11/21(水) 08:07:38.87 ID:dG4a7MEF.net
>>990
いや、lzhのヘッダは安全性そっちのけで拡張性と互換性を優先した結果、
論理的な最大ヘッダサイズが4ギガバイト(要するに制限がない)とか酷い事になってるからねぇ……

例えば最大で64キロバイト程度のzipなんかと同等に並べるのはちょっと無理じゃねーかと。

992 :デフォルトの名無しさん:2018/11/21(水) 09:43:13.45 ID:nqncv/qX.net
>>990
https://micco.mars.jp/vul/2010/mhvi20100425.htm

993 :デフォルトの名無しさん:2018/11/21(水) 09:46:53.64 ID:sFoC6dAL.net
>>991
それの何が問題なんだ?
まさか4GBのメモーがないとヘッダーが読めないとか思ってるのか? w

994 :デフォルトの名無しさん:2018/11/21(水) 09:50:12.82 ID:sFoC6dAL.net
>>992
だからウィルス対策ソフトが対応してないって話だろ
何回ループすれば理解できるんだよ w

995 :デフォルトの名無しさん:2018/11/21(水) 11:07:43.06 ID:dG4a7MEF.net
>>993
おいおい……

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

初心者でもわかりやすいところで言えば
64キロバイトの方はメモリが潤沢にあれば静的なメモリ確保でもいいけど
4ギガバイトの方は普通は動的なメモリ確保が必須になるし。

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


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


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

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

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

1001 :2ch.net投稿限界:Over 1000 Thread
2ch.netからのレス数が1000に到達しました。

総レス数 1001
302 KB
掲示板に戻る 全部 前100 次100 最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★