【.cmd】 バッチファイルスクリプト %15 【.bat】 (819レス)
1-

167: 2023/02/15(水)12:26 ID:z8T+7ef0(1) AAS
そんなことないやろ
!random!でばらけるで
168: 2023/02/15(水)13:04 ID:SA6Um8/R(3/4) AAS
おお、ほんとだ
for %%s in (*.*) do (
setlocal ENABLEDELAYEDEXPANSION
echo !random!
endlocal
)

しかし、これはダメ
setlocal ENABLEDELAYEDEXPANSION
for %s in (c:\windows\system32\*.*) do @echo !random!
endlocal

うーみゅ??
169: 2023/02/15(水)13:08 ID:vbXbTgUC(1) AAS
setlocal enabledelayedexpansion
for %%f in ( *.* ) do @echo !random!

ちゃんと毎回乱数になってるぞ??
170: 2023/02/15(水)13:55 ID:SA6Um8/R(4/4) AAS
.batファイルの中でならOK
forコマンド直打ちはNG
なのね
171
(3): 2023/02/15(水)21:53 ID:2801FI6C(1) AAS
dir あいう!えお.txt → 確認OK
for %%i in ( dir ”*.txt” ) do (
echo ”%%~nxi” →❶
dir ”%%~nxi” →➋
)

❶→あいうえお.txt
➋→ファイル無し

この問題(for文の内部で半角!文字が含まれたファイル名で、!が消えた名前に変わってしまう)の回避方法をご教示いただければ幸いです。
(「あいう!えお.txt」のファイル有りきで…)
172: 2023/02/16(木)11:33 ID:Pi7fCiR3(1/2) AAS
引用符が全角?
173: 2023/02/16(木)12:30 ID:Pi7fCiR3(2/2) AAS
SETLOCAL DISABLEDELAYEDEXPANSION
for %%i in (*.txt) do (
echo "%%~nxi"
)
174: 2023/02/16(木)13:25 ID:tOoYyZel(1/2) AAS
! が消えるって自分も前に経験して困ったことあるけど今適当に試しても消えないな
どういう書き方したら消えるんだっけか
175: 2023/02/16(木)22:08 ID:tOoYyZel(2/2) AAS
setlocal enabledelayedexpansionを使うと駄目なんだっけか
173のレスをコピペして試してたから再現しなかった
回避方法はこの辺読めばいいんじゃないかな>>171
外部リンク:qiita.com
176
(1): 2023/02/18(土)13:12 ID:S+SrMYX3(1/2) AAS
>>171
doの中身をcall使ってサブルーチンにする
サブルーチンの先でDisableDelayedExpansionを行って
一時的に遅延環境変数展開をOFFにする
ちなみにdoの括弧の中でDisableDelayedExpansionしても意味はない

コマンドが実行されるときにどこまでが1行として処理されるかよく考えてみて
177: 2023/02/18(土)16:15 ID:nz9Z1NDi(1) AAS
脳死だがバッチは基本使わない対処をした方が優れている
扱う出力内容で>>171みたいな一見不可解な事が起こり易い
メモ帳で書いてUTF8で保存したり全角文字を混ぜて実行するバカもいる
こんなバッチなんて書いていられるか俺は自分の言語に戻らせてもらう
178: 2023/02/18(土)20:08 ID:S+SrMYX3(2/2) AAS
バッチファイルのスレで何言ってるんだこいつ
179: 2023/02/19(日)06:53 ID:B9Nm4zxk(1) AAS
はい、バイバーイ  ノシ
二度と戻ってこないでね
180: 2023/02/23(木)22:02 ID:KL0E1A05(1) AAS
>>176
サンクス。何とか回避できたようです。
ありがとうございました。
m(_ _)m
181: 2023/02/24(金)06:16 ID:umH2oUG6(1/2) AAS
176の方法で回避?
call しても ! 文字は消えるけど
どうやって値を渡したのか、ちゃんと報告しろ
182: 2023/02/24(金)06:21 ID:jJ3mlMsu(1) AAS
なぜそんな上からなのか
183
(1): 2023/02/24(金)06:50 ID:umH2oUG6(2/2) AAS
そうか?
報告してください。お願いします。
184: 2023/02/24(金)13:07 ID:xAv3d2xt(1) AAS
よろしい
185
(1): 2023/02/26(日)02:12 ID:6qO2uMR0(1) AAS
>>183
私も単にcallにしただけではiの文字が消えたままだったけど、
setlocalを全部外したらcallした先でi文字付きで認識できるようになった。
なんでそうなったかは正直確信が持てないが、気がついた変更はそれだった。
ハッキリ答えられずすみません…
186: 2023/02/26(日)07:59 ID:ZRUXpLmJ(1) AAS
>>185
報告ありがとう
遅延展開での for 文の変数値に ! や ^ があると値が変わる事がある
遅延無しなら値が変わらない
call にするかどうかは別の話
ヘルプをよく読んで下さい
setlocal /?
for /?
引用符は半角にして下さい
質問文のバッチはそれだけで他人が問題点を再現できるものにして下さい
187: 2023/02/26(日)20:35 ID:gahU4Yv8(1) AAS
なぜそんなギスギスなのか
仕事中に仕事以外の会話のできない方か
188: 2023/02/26(日)23:08 ID:d/RsgC9o(1) AAS
これAIの何とかってやつが書いた文章だろ?…っての、そこら中で見るなw
189: 2023/02/27(月)11:42 ID:JmzEtsrD(1) AAS
まあ好かれる人間ではないよな
たまにいる、そういう奴
190: 2023/02/27(月)11:47 ID:MWG0Dnko(1) AAS
まあ対面では絶対そんな言葉使いはしないよね
191: 2023/02/27(月)14:46 ID:+mdXvmJb(1) AAS
変数値が変わるわけないだろ
展開した値が元と違うだけ
192
(1): 2023/03/01(水)12:26 ID:fuKOGN7X(1/6) AAS
すいません
超初心者的な質問なんですが、
バッチファイルって、サブルーチンを設定する時に、一度実行されてしまうんですよね?
193
(1): 2023/03/01(水)13:18 ID:p0dowhw3(1) AAS
call先で一行ずつ実行するだけ
サブルーチンの設定て何だろ
194: 2023/03/01(水)13:49 ID:Co0n2HTo(1) AAS
質問が不明瞭すぎる
195
(1): 2023/03/01(水)15:49 ID:tZuIfIoC(1) AAS
>>192
バッチファイルにサブルーチンなんて無い
サブルーチン的な事したければラベル書いてそこにジャンプする
当然ジャンプじゃなくて上から来た場合も普通に実行される
それが嫌ならラベルの直前に exit/b でも書いとけ
196: 2023/03/01(水)17:52 ID:fuKOGN7X(2/6) AAS
すいません
具体的に書きます!!

@echo off

call :set_errorlevel

:set_errorlevel

echo aaaaa

exit /b

こういうのがあったとして

C:\Users\■■■>■:\1112.bat
aaaaa
aaaaa

↑なぜ二つ実行されるのか?って意味です。
1-
あと 623 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ

ぬこの手 ぬこTOP 0.009s