[過去ログ] 【.cmd】 バッチファイルスクリプト %12 【.bat】©2ch.net (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
936: 2018/10/30(火)17:53 ID:ZaLbntHv(1/2) AAS
その呼び出してるアプリが32bitアプリなのだと予想
937: 2018/10/30(火)17:57 ID:GfHx62hK(2/3) AAS
C:\Program Files (x86)なので32ビットですね
938: 2018/10/30(火)18:58 ID:ZaLbntHv(2/2) AAS
64bitOSでの32bitアプリはエミュレーションみたいな物で、32bitアプリから64bitのdllは使えないし、その逆も出来ないようになってる。なのでcmd.comも分けてあるという理由でメモリや動作モード以外の機能差は無いのではなかろうかと
939: 2018/10/30(火)19:57 ID:8A3JIwUi(1) AAS
32bitアプリから見た C:\Windows\System32 の実体は C:\Windows\SysWOW64 だから、
System32にあってもSysWOW64にないコマンド(WSL関連とか)は実行できないとか、
環境変数の値がビット数に応じて違うとか、その程度の違い
940: 2018/10/30(火)22:17 ID:GfHx62hK(3/3) AAS
試しに
64ビットでビルドしたコマンドは
普通に動作しました

>echo %__APPDIR__%
C:\Windows\SysWOW64\

>Hello_World.exe
Hello World!
941: 2018/10/31(水)19:08 ID:QI0rTSh9(1) AAS
以前は確かsystem32のcmdとSysWOW64のcmdが同じだったんだ
そんでもってWinSxSのcmdが違っていた
今はsystem32とSysWOW64が違うんだな
WinSxSのはsystem32と同じになってる
手品の種が変った?
942: 2018/10/31(水)21:11 ID:lh+glCNV(1) AAS
>>926
作ってみた。ファイル名に%がはいらない前提ですが、こんな手もあるということで勘弁願いたい。

@echo off 
set t=tmp.bat 
echo type bass.csv^^>%t% 

for /f "delims=" %%a in ( delete.txt ) do ( 
  echo  ^| find /v "%%a,"^^>>%t% 

echo  ^>output.csv>>%t% 

call %t% 
省1
943: 2018/11/01(木)07:13 ID:5DVAbKOZ(1/2) AAS
夜見た時は何をやってるのか分からなかった。
finnd /vをパイプでパターン数繰り返すわけね。
944: 2018/11/01(木)11:22 ID:06yasLFO(1) AAS
%ってファイル名に使えるんだね
半角記号でバッチの挙動に関係するのは「!」くらいしか知らなかったわ。

じゃあ変数名と同じ名前のフォルダ(例えば「%appdata%」)に
cdで移動するのは無理って事?
945
(1): 2018/11/01(木)11:39 ID:OrBUhe7y(1/2) AAS
@echo off
md %%appdata%%
cd %%appdata%%
cd
pause
946: 2018/11/01(木)11:46 ID:OrBUhe7y(2/2) AAS
>set /p a=
%appdata%

>cd %a%

>cd
D:\%appdata%
947: 2018/11/01(木)19:53 ID:5DVAbKOZ(2/2) AAS
for /f 文の時の()内ってダブルコーテーションのパスつっこむとダメなのね
知らなかったわ……
948: 2018/11/01(木)21:09 ID:OeVqRgzL(1) AAS
usebackqがあるだろ
949: 2018/11/02(金)17:48 ID:C2p2E45I(1) AAS
>>945
%の前に%を置いてエスケープするのか
どうもありがとう
950
(1): 2018/11/05(月)20:55 ID:LVlVWx6w(1) AAS
遅延展開だと論理否定の単項演算子が全く使い物にならない
@echo off
setlocal enabledelayedexpansion
set /a a=0,b=0
set /a "a=!22+!33"
echo a=!a!
set /a "b=!(5^5)"
echo b=!b!
pause

なんだこの結果は
省5
951
(1): 2018/11/06(火)07:20 ID:4bA2Iy3p(1/5) AAS
>>950
XORは二重引用符で囲んでも更にエスケープの謎仕様
@echo off
set n=!
setlocal enabledelayedexpansion
set /a a=0,b=0
set /a "a=!n!22+!n!33"
echo a=!a!
set /a "b=!n!(5^^5)"
echo b=!b!
省3
952: 2018/11/06(火)08:19 ID:NUZ4yNuE(1) AAS
言語仕様に謎が多すぎて業務に使うには怖い
953: 2018/11/06(火)10:53 ID:XCQlzVed(1) AAS
標準インストールされてるという以外に長所はないよなぁ
954: 2018/11/06(火)11:06 ID:OYWwvpi1(1) AAS
今のWindowsなら、Powerchell?、WSH?なら、標準インストールされているが・・・・。
以前なら、REXX(PC-DOS)とか、QBASICあたり?

でも、使い物になるのは・・・・。
955: 2018/11/06(火)11:25 ID:CgLejKNb(1) AAS
QBASICは中身がないので別途買わないと動かないよ
956
(1): 2018/11/06(火)14:54 ID:7wQVLanf(1) AAS
>>951
!を取って
set /a "b=(5^^5)"
では
オペランドがありません。
0
って出るのは何故?
957: 2018/11/06(火)15:53 ID:4bA2Iy3p(2/5) AAS
>>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
省6
958: 2018/11/06(火)15:56 ID:4bA2Iy3p(3/5) AAS
たぶん式に遅延変数があると2回展開してるんじゃ?
959: 2018/11/06(火)16:35 ID:4bA2Iy3p(4/5) AAS
遅延変数が無くても
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)"
省3
960: 2018/11/06(火)16:48 ID:4bA2Iy3p(5/5) AAS
遅延無しの環境では二重引用符だけでエスケープは要らないようだ
>cmd /v:off
>set /a "a=!(123^123)"
1
>
961: 2018/11/07(水)07:55 ID:BI4/Q6Ue(1) AAS
遅延モードでは式の中に ! 文字があると展開の処理が違うんだろう。
だから ^ 文字の扱いも変化する。
962: 2018/11/08(木)07:17 ID:9iJL9tpZ(1) AAS
@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 ID:3Y5lMbnv(1/4) AAS
%~nx0 が変だ

>dir /b
test.bat

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

>test
file="test.bat"

>"test"
file="test"
省1
964: 2018/11/09(金)11:09 ID:3Y5lMbnv(2/4) AAS
どうも先頭の引用符が怪しい

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

>test"
file="test.bat"

>"test
file="test"

>
965: 2018/11/09(金)17:30 ID:3Y5lMbnv(3/4) AAS
>te"st
file="test.bat"
1-
あと 37 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.024s