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

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

1 :デフォルトの名無しさん:2022/09/14(水) 20:04:01.36 ID:XL8H98jz.net
拡張子が .cmd または .bat のバッチファイルのスクリプティング(プログラミング)に関わる
質問,テクニック(JScript,Perl等の埋め込みなど含む),関連情報のためのスレです

※何でも無理矢理バッチでやろうとせず、WSH等の使用も検討しましょう

過去スレ
%14 https://mevius.5ch.net/test/read.cgi/tech/1597442426/
%13 https://mevius.2ch.net/test/read.cgi/tech/1542779527/
%12 https://mevius.2ch.net/test/read.cgi/tech/1489207631/
%11 https://echo.2ch.net/test/read.cgi/tech/1424858999/
%10 https://peace.2ch.net/test/read.cgi/tech/1374205515/
%9 https://toro.2ch.net/test/read.cgi/tech/1335015478/
%8 https://toro.2ch.net/test/read.cgi/tech/1315844420/
%7 https://hibari.2ch.net/test/read.cgi/tech/1298873550/
%6 https://hibari.2ch.net/test/read.cgi/tech/1277465356/
%5 https://pc12.2ch.net/test/read.cgi/tech/1242268171/
%4 https://pc12.2ch.net/test/read.cgi/tech/1229955189/
%3 https://pc11.2ch.net/test/read.cgi/tech/1217860043/
%2 https://pc11.2ch.net/test/read.cgi/tech/1197881068/
【.cmd】 バッチファイルスクリプト %1 【.bat】
https://pc11.2ch.net/test/read.cgi/tech/1178281991/
バッチファイルプログラミング 3.bat
https://pc11.2ch.net/test/read.cgi/tech/1148485555/
バッチファイルプログラミング 2.bat
https://pc8.2ch.net/test/read.cgi/tech/1104911889/
バッチファイルプログラミング質問スレ
https://pc5.2ch.net/test/read.cgi/tech/1040614686/

163 :デフォルトの名無しさん:2023/02/15(水) 09:43:24.57 ID:TE3DoOlC.net
遅延環境変数でも駄目?

164 :デフォルトの名無しさん:2023/02/15(水) 09:50:13.69 ID:SA6Um8/R.net
あかんかった

165 :デフォルトの名無しさん:2023/02/15(水) 12:26:54.02 ID:z8T+7ef0.net
そんなことないやろ
!random!でばらけるで

166 :デフォルトの名無しさん:2023/02/15(水) 13:04:59.88 ID:SA6Um8/R.net
おお、ほんとだ
for %%s in (*.*) do (
setlocal ENABLEDELAYEDEXPANSION
echo !random!
endlocal
)

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

うーみゅ??

167 :デフォルトの名無しさん:2023/02/15(水) 13:08:20.84 ID:vbXbTgUC.net
setlocal enabledelayedexpansion
for %%f in ( *.* ) do @echo !random!

ちゃんと毎回乱数になってるぞ??

168 :デフォルトの名無しさん:2023/02/15(水) 13:55:25.99 ID:SA6Um8/R.net
.batファイルの中でならOK
forコマンド直打ちはNG
なのね

169 :デフォルトの名無しさん:2023/02/15(水) 21:53:53.82 ID:2801FI6C.net
dir あいう!えお.txt → 確認OK
for %%i in ( dir ”*.txt” ) do (
echo ”%%~nxi” →❶
dir ”%%~nxi” →➋
)

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

この問題(for文の内部で半角!文字が含まれたファイル名で、!が消えた名前に変わってしまう)の回避方法をご教示いただければ幸いです。
(「あいう!えお.txt」のファイル有りきで…)

170 :デフォルトの名無しさん:2023/02/16(木) 11:33:08.40 ID:Pi7fCiR3.net
引用符が全角?

171 :デフォルトの名無しさん:2023/02/16(木) 12:30:36.05 ID:Pi7fCiR3.net
SETLOCAL DISABLEDELAYEDEXPANSION
for %%i in (*.txt) do (
echo "%%~nxi"
)

172 :デフォルトの名無しさん:2023/02/16(木) 13:25:19.43 ID:tOoYyZel.net
! が消えるって自分も前に経験して困ったことあるけど今適当に試しても消えないな
どういう書き方したら消えるんだっけか

173 :デフォルトの名無しさん:2023/02/16(木) 22:08:46.71 ID:tOoYyZel.net
setlocal enabledelayedexpansionを使うと駄目なんだっけか
173のレスをコピペして試してたから再現しなかった
回避方法はこの辺読めばいいんじゃないかな>>169
https://qiita.com/yz2cm/items/4983be006116c369d08b

174 :デフォルトの名無しさん:2023/02/18(土) 13:12:03.68 ID:S+SrMYX3.net
>>169
doの中身をcall使ってサブルーチンにする
サブルーチンの先でDisableDelayedExpansionを行って
一時的に遅延環境変数展開をOFFにする
ちなみにdoの括弧の中でDisableDelayedExpansionしても意味はない

コマンドが実行されるときにどこまでが1行として処理されるかよく考えてみて

175 :デフォルトの名無しさん:2023/02/18(土) 16:15:41.68 ID:nz9Z1NDi.net
脳死だがバッチは基本使わない対処をした方が優れている
扱う出力内容で>>169みたいな一見不可解な事が起こり易い
メモ帳で書いてUTF8で保存したり全角文字を混ぜて実行するバカもいる
こんなバッチなんて書いていられるか俺は自分の言語に戻らせてもらう

176 :デフォルトの名無しさん:2023/02/18(土) 20:08:07.43 ID:S+SrMYX3.net
バッチファイルのスレで何言ってるんだこいつ

177 :デフォルトの名無しさん:2023/02/19(日) 06:53:20.13 ID:B9Nm4zxk.net
はい、バイバーイ  ノシ
二度と戻ってこないでね

178 :デフォルトの名無しさん:2023/02/23(木) 22:02:16.64 ID:KL0E1A05.net
>>174
サンクス。何とか回避できたようです。
ありがとうございました。
m(_ _)m

179 :デフォルトの名無しさん:2023/02/24(金) 06:16:27.49 ID:umH2oUG6.net
176の方法で回避?
call しても ! 文字は消えるけど
どうやって値を渡したのか、ちゃんと報告しろ

180 :デフォルトの名無しさん:2023/02/24(金) 06:21:19.29 ID:jJ3mlMsu.net
なぜそんな上からなのか

181 :デフォルトの名無しさん:2023/02/24(金) 06:50:27.38 ID:umH2oUG6.net
そうか?
報告してください。お願いします。

182 :デフォルトの名無しさん:2023/02/24(金) 13:07:53.45 ID:xAv3d2xt.net
よろしい

183 :デフォルトの名無しさん:2023/02/26(日) 02:12:26.08 ID:6qO2uMR0.net
>>181
私も単にcallにしただけではiの文字が消えたままだったけど、
setlocalを全部外したらcallした先でi文字付きで認識できるようになった。
なんでそうなったかは正直確信が持てないが、気がついた変更はそれだった。
ハッキリ答えられずすみません…

184 :デフォルトの名無しさん:2023/02/26(日) 07:59:37.30 ID:ZRUXpLmJ.net
>>183
報告ありがとう
遅延展開での for 文の変数値に ! や ^ があると値が変わる事がある
遅延無しなら値が変わらない
call にするかどうかは別の話
ヘルプをよく読んで下さい
setlocal /?
for /?
引用符は半角にして下さい
質問文のバッチはそれだけで他人が問題点を再現できるものにして下さい

185 :デフォルトの名無しさん:2023/02/26(日) 20:35:28.85 ID:gahU4Yv8.net
なぜそんなギスギスなのか
仕事中に仕事以外の会話のできない方か

186 :デフォルトの名無しさん:2023/02/26(日) 23:08:44.91 ID:d/RsgC9o.net
これAIの何とかってやつが書いた文章だろ?…っての、そこら中で見るなw

187 :デフォルトの名無しさん:2023/02/27(月) 11:42:47.10 ID:JmzEtsrD.net
まあ好かれる人間ではないよな
たまにいる、そういう奴

188 :デフォルトの名無しさん:2023/02/27(月) 11:47:26.81 ID:MWG0Dnko.net
まあ対面では絶対そんな言葉使いはしないよね

189 :デフォルトの名無しさん:2023/02/27(月) 14:46:21.47 ID:+mdXvmJb.net
変数値が変わるわけないだろ
展開した値が元と違うだけ

190 :デフォルトの名無しさん:2023/03/01(水) 12:26:47.31 ID:fuKOGN7X.net
すいません
超初心者的な質問なんですが、
バッチファイルって、サブルーチンを設定する時に、一度実行されてしまうんですよね?

191 :デフォルトの名無しさん:2023/03/01(水) 13:18:49.01 ID:p0dowhw3.net
call先で一行ずつ実行するだけ
サブルーチンの設定て何だろ

192 :デフォルトの名無しさん:2023/03/01(水) 13:49:19.87 ID:Co0n2HTo.net
質問が不明瞭すぎる

193 :デフォルトの名無しさん:2023/03/01(水) 15:49:02.20 ID:tZuIfIoC.net
>>190
バッチファイルにサブルーチンなんて無い
サブルーチン的な事したければラベル書いてそこにジャンプする
当然ジャンプじゃなくて上から来た場合も普通に実行される
それが嫌ならラベルの直前に exit/b でも書いとけ

194 :デフォルトの名無しさん:2023/03/01(水) 17:52:18.10 ID:fuKOGN7X.net
すいません
具体的に書きます!!

@echo off

call :set_errorlevel


:set_errorlevel

echo aaaaa

exit /b

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

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

↑なぜ二つ実行されるのか?って意味です。

195 :デフォルトの名無しさん:2023/03/01(水) 17:54:05.48 ID:68s28u+f.net
1回目がcallで実行
2回目がそのままの流れで実行されてる

196 :デフォルトの名無しさん:2023/03/01(水) 18:36:49.49 ID:GaouMb9c.net
1行ずつ逐次実行していくから
call文でラベルに飛んで実行し戻って来る
ステップが次の行に移行してcall文の次の文を実行しようとする
そこにはラベル以下があったわけだ
call文から戻ってきた所で実行を止めたければ
goto :eof
をcall文の次に書いておくといい

197 :デフォルトの名無しさん:2023/03/01(水) 18:59:16.83 ID:fuKOGN7X.net
>>191
>>193
更新してなかったので、レスに気が付きませんでしたs。
おお!できました!
理解出来ました!
有難う御座いましたs。

198 :デフォルトの名無しさん:2023/03/01(水) 19:02:16.77 ID:fuKOGN7X.net
>>196
>>195
おお!なるほど!それでもできました!
ありがとうございました!

199 :デフォルトの名無しさん:2023/03/01(水) 19:04:20.16 ID:fuKOGN7X.net
なるほど
ただラベルをつけてよびだしているだけなんですね
バッチにmethodやサブルーチンって概念はないんですね!
勉強になりました1

200 :デフォルトの名無しさん:2023/03/01(水) 19:05:12.08 ID:fuKOGN7X.net
ていうことは、うまく調整しないと、2回同じ実行することになりますね!
早めに気が付いてよかったです!

201 :デフォルトの名無しさん:2023/03/01(水) 22:53:45.68 ID:6i7MYFqO.net
コマンドプロンプトから
start chrome "D:/test.html?a=001"
としたのですが
D:/test.html
が開かれました。
ローカルのhtmlにクエリを付けて開く方法があればご教示頂きたいです。

202 :デフォルトの名無しさん:2023/03/01(水) 23:15:54.48 ID:8kmkGnGP.net
それはchromeのお話ですねえ
開発元のgoogleに聞くのが早いのでは

203 :デフォルトの名無しさん:2023/03/02(木) 07:45:52.86 ID:X0Akc+Oj.net
起動するとネットワークプリンタでファイルを出力できるバッチファイルて作れますか?

204 :デフォルトの名無しさん:2023/03/02(木) 10:15:53.52 ID:rYHGX+R7.net
ネットワークプリンタで出力されるものは印刷物です
ファイルではありません

205 :デフォルトの名無しさん:2023/03/02(木) 10:50:24.75 ID:h3FhlPC5.net
>>201
クエスチョンマーク以降のパラメーターを解釈するのは、Webサーバーのお仕事です
サーバーを立ち上げるか借りるかしましょう

206 :デフォルトの名無しさん:2023/03/02(木) 11:39:56.39 ID:5LS4jA2t.net
>>201
"file:///D:/test.html?a=001"は?
"D:/test.html?a=001"だとD:/test.html%3Fa=001を開こうとしてERR_FILE_NOT_FOUNDになるなぁ

207 :デフォルトの名無しさん:2023/03/02(木) 12:44:28.71 ID:RvyObGoZ.net
>>206
それでいけるね
ちゃんとクエリーデータも渡ってきてる

208 :デフォルトの名無しさん:2023/03/02(木) 14:02:39.40 ID:RvyObGoZ.net
>>205
クエリーパラメタはURLの解釈の部分だと思われる(window.location.search)ので
サーバーの仕事というよりHTMLの実行部分(エンジン)の仕事なんだろうね

209 :デフォルトの名無しさん:2023/03/03(金) 14:20:26.65 ID:cfdc5Bpc.net
あぐえ

210 :デフォルトの名無しさん:2023/03/03(金) 14:22:08.63 ID:cfdc5Bpc.net
ぼうけ

211 :デフォルトの名無しさん:2023/03/07(火) 15:36:52.13 ID:aaO7s6EJ.net
「作成日時が30日以上前」を条件としてフォルダ内のファイルを削除したいのですが、方法はありますか?

forfiles だと更新日時が条件となってしまいます、、、

212 :デフォルトの名無しさん:2023/03/07(火) 16:49:23.24 ID:/8dYORgk.net
作成日時は頑張れば取得できるけどコマンドプロンプトでは時間計算ができないから
PowerShellのスクリプトを書いたほうがいいと思う

213 :デフォルトの名無しさん:2023/03/07(火) 17:27:20.76 ID:GAVJiBto.net
@echo off
for /f "usebackq" %%i in (`powershell -c "([datetime](get-date)).AddDays(-30).tostring('yyyyMMdd')"`) do set now=%%i

for /f "tokens=1-5* skip=4 delims=/ " %%i in ('dir /tc /od /a-d') do (
if %%i%%j%%k gtr %now% goto:eof
if "%%n" neq "" echo delete --- %%n
)

214 :デフォルトの名無しさん:2023/03/07(火) 18:08:36.87 ID:aaO7s6EJ.net
>>212
簡単に取得できないんですね、、、
forfileに変わるような便利なコマンドがあれば良かったんですけどね、、、
ありがとうございます。

215 :デフォルトの名無しさん:2023/03/07(火) 19:20:35.55 ID:UPk4pcGD.net
自分でexe作るよろし

216 :デフォルトの名無しさん:2023/03/07(火) 19:39:11.17 ID:trxvq/2q.net
前月の同日以前にしたら

217 :デフォルトの名無しさん:2023/03/08(水) 05:54:33.72 ID:AsCwI7z1.net
Ruby なら、glob, birthtime を使う。
ただし、DryRun なので実際には削除されません

require 'fileutils'
require 'date'

Prev_day_30 = Date.today - 30 # 今日の30日前

# 絶対パスのディレクトリ名の後ろに、* を付けること!
# . で始まる、隠し directory, file を除く
glob_pattern = "C:/Users/Owner/Documents/test/*"

Dir.glob( glob_pattern ).select do |full_path|
stat = File.stat full_path
date = stat.birthtime.to_date # 作成日付

# ファイルで、作成日付が今日の30日前以前のものだけ。30日前も含む
stat.file? && date <= Prev_day_30
end
.each { |full_path| FileUtils::DryRun.rm( full_path ) } # ファイルを削除

218 :デフォルトの名無しさん:2023/03/09(木) 08:57:37.30 ID:12Ly5Xlm.net
コマンドラインで置換するスクリプトを拾って改造したけど半角スペースや!が混ざるとうまくいかない

chcp 65001
@echo off
echo "第1引数はパス「%1」です。"
echo "第2引数は置換前「%2」です。"
echo "第3引数は置換後「%3」です。"
echo "第4引数はファイル名「%4」です。"
cd /D %1
rem "もし「file_replaced.txt」ファイルが既に存在している場合、削除しておく"
if exist backup_%4 del backup_%4
rem "元ファイルをリネームする"
rename %4 backup_%4
rem "以下の「for」ループ内で変数を変化させるための宣言"
setlocal ENABLEDELAYEDEXPANSION
rem "「for」ループで「file.txt」ファイルの内容を1行ずつ取得し、"
rem "「woman」を「girl」に置換する"
for /f "delims=" %%a in (backup_%4) do (
rem "変数「line」にファイル内容を一行ずつ代入する"
set line=%%a
rem "変数「line」内の「woman」を「girl」に置換し、"
rem "「file_replaced.txt」ファイルに書き込む"
echo !line:%2=%3!>>%4
)

endlocal

219 :デフォルトの名無しさん:2023/03/09(木) 09:46:40.82 ID:H0Wzj8XM.net
強いて言うなら、変数は ”” でくくる、”%%~a”、”%~1” みたいに
使うほうがトラブルが少ない、
! だけじゃなくて ^ や % などもケアする必要があるので面倒くさい、
になってくる

なので、バッチファイルでやる縛りがあるなら仕方ないかもだけど、
さすがに置換のできる何かを、使うor使えるようにした方が良くない?
今どきの PC なら PowerShell 使えるだろうからせめてそっちにするとか

220 :デフォルトの名無しさん:2023/03/09(木) 19:15:35.15 ID:eHaHoipW.net
外部コマンドで置換できるツールがフォーカスを奪う仕様で操作できなくなるから
VMで実行したら数時間たっても終わらなくて
別の方法を探したらこれに至った

専用ソフトが見つかり無事終わった

221 :デフォルトの名無しさん:2023/03/10(金) 02:47:18.98 ID:5g8/KHh8.net
Ruby なら、

re = /あい/

text = <<'EOT'
xあいxあい
yあ
いy
あい
EOT

puts dest = text.gsub( re, 'そら' )

出力
xそらxそら
yあ
いy
そら

222 :デフォルトの名無しさん:2023/03/10(金) 03:09:52.26 ID:dbCMTPvQ.net
チラシの裏で

223 :デフォルトの名無しさん:2023/03/10(金) 17:32:01.38 ID:eGLVllnw.net
散々コマンドリファレンスを読んだりググったけど分からないことを教えてください。

type data.txt | hoge.bat
みたいな事がしたいのですが、バッチスクリプトで、
・bash での read line
・VBScript での WScript.StdIn.ReadLine
のように、1行ずつ標準入力を読むことは可能でしょうか?やっぱり駄目でしょうか?

224 :デフォルトの名無しさん:2023/03/10(金) 18:36:07.72 ID:3mB0yP28.net
for /F

225 :デフォルトの名無しさん:2023/03/10(金) 18:44:37.57 ID:KiwyNmEo.net
何がやっぱりなのかわからん
もっとちゃんとググれ

226 :デフォルトの名無しさん:2023/03/10(金) 19:12:34.24 ID:eGLVllnw.net
>>224
ヒントありがとう。for の中であのコマンドを使うんか…。

>>225
上から目線のジジイはすっこんでろ。
どうせ分かんないんだろ。
ということで正解はここには書かん

227 :デフォルトの名無しさん:2023/03/10(金) 19:31:43.62 ID:hNo+M64i.net
要するに見ての通り他のコマンドからパイプで渡された標準入力をバッチファイルで受け取りたいと言う事でしょ
無理なんじゃね

228 :デフォルトの名無しさん:2023/03/10(金) 19:46:29.11 ID:vz26ACYY.net
やっぱり(予想通り・諦め・失望)

229 :デフォルトの名無しさん:2023/03/10(金) 20:58:45.48 ID:c3BQ1P8m.net
こんなのでもいいかな?
@echo off
set lines=0
for /f "tokens=*" %%i in ('more') do (
set data=%%i
call :sub
)
goto :eof
:sub
set /a lines+=1
echo %lines% - %data%

230 :デフォルトの名無しさん:2023/03/10(金) 21:03:30.78 ID:c3BQ1P8m.net
もちろん
forループの特性上、空白行はスキップされたりいろいろするので
finsdtrと組み合わせたり色々しないといけないけど
過去ログにその話はあったかと

231 :デフォルトの名無しさん:2023/03/10(金) 21:21:55.47 ID:c3BQ1P8m.net
一応表示は""で括ったほうがいいかな
データ内容次第ではエラーとか色々起きるんで

232 :デフォルトの名無しさん:2023/03/10(金) 21:27:21.03 ID:c3BQ1P8m.net
バッチの入力データ次第という奴はどうしようもないことは以前から何度もレスされてる
""で括ってもダメで遅延環境変数で出力するのが一番まともかも
完全ではないだろうけど

233 :デフォルトの名無しさん:2023/03/18(土) 01:36:02.39 ID:iEi+ABmN.net
フォーいーちないのか?

234 :デフォルトの名無しさん:2023/04/13(木) 18:51:07.20 ID:dCQIGdp/.net
>>223
bing のチャットAIに丸投げしてみた

バッチスクリプトで標準入力を1行ずつ読む方法については、以下のような方法があります¹⁴。
- `for /f %%[アルファベット1文字] in ([ファイル名]) do ([処理])` を使う方法
- `set /p 変数名=` を使う方法

例えば、以下のようなバッチスクリプトで、data.txt の内容を hoge.bat に渡すことができます。
```
@echo off
for /f %%a in (data.txt) do (
echo %%a | hoge.bat
)
```
上記の例では、data.txt の内容を1行ずつ読み込み、hoge.bat に渡しています。¹

235 :デフォルトの名無しさん:2023/04/14(金) 12:47:02.76 ID:ITYRpePX.net
質問は受け側のバッチの内容だろ
送り側でfor文にする意味不明

236 :デフォルトの名無しさん:2023/04/14(金) 13:02:44.39 ID:twidN+O+.net
処理対象がconioだった名残がたまたま残ってただけで
バッチ自体に標準入力という概念は無さそう

237 :デフォルトの名無しさん:2023/04/16(日) 15:03:53.79 ID:OSGOKcik.net
ループ処理やif分でもカッコ内の変数スコープがおかしくなるのはどういう原理なんです?

238 :デフォルトの名無しさん:2023/04/16(日) 15:21:04.10 ID:j/ssGNNl.net
実行する行の解釈の後に実行されるから
この行の解釈は(から)までは1行として一気に解釈される
つまり括弧の中の代入文があったとしても実行前の解釈の時点で(その時点の値で)展開されてしまう

239 :デフォルトの名無しさん:2023/04/16(日) 15:36:27.49 ID:j/ssGNNl.net
>>237
set /?
に詳しい説明があるので読んでみること

240 :デフォルトの名無しさん:2023/04/16(日) 16:30:15.10 ID:zYIf7I3E.net
なにをやってスコープがおかしくなったのか具体例を上げてくれないとなんとも言えないな

241 :デフォルトの名無しさん:2023/04/16(日) 16:43:43.01 ID:j/ssGNNl.net
いやだからスコープなんて高級な概念は存在しないんだけど

242 :デフォルトの名無しさん:2023/04/16(日) 16:45:17.05 ID:Dywad+WI.net
バッチファイルの言語仕様はウンコすぎるから
if ... call :foo "%~1"
for ... call :foo "%%~i"
とかやっといた方がミスが少ない

243 :デフォルトの名無しさん:2023/04/16(日) 16:45:38.04 ID:j/ssGNNl.net
いやsetlocalがあったか
でもそれを使ってるんならまず自分のやってることは認識してるはずなんだが

244 :デフォルトの名無しさん:2023/04/18(火) 09:44:21.06 ID:N1MfEhNS.net
ファイルディスクリプタの1(標準出力)と3を同時にリダイレクトすると
以降プロンプトや標準出力が表示されなくなるのはなぜでしょう?
ハング等ではなく表示されないだけで、cmdとの対話モードは続いているようです。

C:\> dir >nul 3>nul
dir  ←表示されない
dir >&2  ←表示される
winver  ←起動する

245 :デフォルトの名無しさん:2023/04/19(水) 22:45:42.84 ID:UrhLKEvZ.net
win11 64bitの環境でどのようなフォルダを開いても
最初からファイルの並びや表示を↓のようにしたいです。
●●●●●●●●●●●
表示は「一覧」
並び替えは「名前」で「昇順」
グループで表示は「なし」
●●●●●●●●●●●
クリーンインストール直後でもbatファイルで一発で
出来るようなの教えてください

246 :デフォルトの名無しさん:2023/04/20(木) 22:07:04.72 ID:dJqrvGvM.net
クリーンインストールでやる場合はISOイメージをカスタマイズする必要あると思うし
このスレの範疇をだいぶ超えてるような気がする
ひょっとすると外人ならbatファイル一発でやる「技」を持ってるかもしれないね

247 :デフォルトの名無しさん:2023/04/21(金) 08:48:46.19 ID:TBBX4m6H.net
>>244
ようわからんなこれ。
標準出力の向き先が3番に切り替わってる。
4番もリダイレクトすると標準エラー出力も切り替わりっぱなしになる。

バグ利用?だけどこれ利用するとデフォルトでログ出力できるな。
echo onだとプロンプトまで記録できる。

●【バッチ】**************************
@type nul 1>nul 2>nul 3>"%~f0.log" 4>&3
echo 処理開始
ver
cd aaa
echo 処理終了
@exit /b
●【画面】****************************
処理終了
続行するには何かキーを押してください . . .
●【ログ】****************************
C:\>echo 処理開始
処理開始

C:\>ver
Microsoft Windows [Version 10.0.19044.2846]

C:\>cd aaa
指定されたパスが見つかりません。

C:\>echo 処理終了
処理終了

248 :デフォルトの名無しさん:2023/04/21(金) 08:53:12.94 ID:TBBX4m6H.net
>>247
改行数制限に引っかかって修正した時にバッチ内容間違えた。

@type nul 1>nul 2>nul 3>"%~f0.log" 4>&3
echo 処理開始
ver
cd aaa
echo 処理終了
@echo 処理終了 >&3 & pause >&3
@exit /b

249 :デフォルトの名無しさん:2023/04/24(月) 17:00:24.74 ID:oDKRGmAI.net
>>245
その設定にするレジストリ教えて

250 :デフォルトの名無しさん:2023/04/26(水) 22:20:37.49 ID:MVyBKPQf.net
---------------
@echo off
set "parent_directories=tamachi omiya"
set "sub_directories=0001 0002 0010"
setlocal enabledelayedexpansion
for %%P in (%parent_directories%) do (
for %%S in (%sub_directories%) do (
set "combined_directory=%%P%%S"
echo RewriteEngine On > !combined_directory!.htaccess
echo RewriteBase /%%P/%%S/ >> !combined_directory!.htaccess
echo. >> !combined_directory!.htaccess
echo # Redirect only short URLs >> !combined_directory!.htaccess
echo RewriteCond %%{REQUEST_FILENAME} !-f >> !combined_directory!.htaccess
echo RewriteCond %%{REQUEST_FILENAME} !-d >> !combined_directory!.htaccess
echo RewriteRule ^^(.+)$ htdocs/$1 [L] >> !combined_directory!.htaccess
)
)
上記のようなコマンドのバッチを作った。
バッチを叩くと以下のようなhtaccessをfor分だけ出力させたい。
しかし、$文字のために、バッチがすすまない。$$としてエスケープ試してみるもできなかった。
良きアイデアないだろうか?
---------------
【tamachi0001.htaccess】

RewriteEngine On
RewriteBase /tamachi/0001/

# Redirect only short URLs
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ htdocs/$1 [L]

251 :デフォルトの名無しさん:2023/04/26(水) 22:46:13.41 ID:UfBGheQ3.net
>>250
$の前の)がdoの閉じカッコになっちゃってる
echo RewriteRule ^^(.+^)$ htdocs/$1 [L] >> !combined_directory!.htaccess

252 :デフォルトの名無しさん:2023/04/26(水) 23:03:33.59 ID:MVyBKPQf.net
>>251
ありがとう。確かにvscodeだと()対応の注意はなかったのに、sublimetextでは注意してる。
気づかないなあー。助かりました。勉強になります。

253 :デフォルトの名無しさん:2023/04/26(水) 23:43:29.63 ID:MVyBKPQf.net
別件にて質問させてください。
バッチが出力するファイルを

RewriteCond %{REQUEST_FILENAME} -f
RewriteCond %{REQUEST_FILENAME} -d

ではなくて、

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

としたい。
どのように修正すればよいでしょうか?


------

@echo off
set "parent_directories=tamachi omiya"
set "sub_directories=0001 0002 0010"
setlocal enabledelayedexpansion

for %%P in (%parent_directories%) do (
for %%S in (%sub_directories%) do (
set "combined_directory=%%P%%S"
echo RewriteEngine On > !combined_directory!.htaccess
echo RewriteBase /%%P/%%S/ >> !combined_directory!.htaccess
echo. >> !combined_directory!.htaccess
echo # Redirect only short URLs >> !combined_directory!.htaccess
echo RewriteCond %%{REQUEST_FILENAME} !-f >> !combined_directory!.htaccess
echo RewriteCond %%{REQUEST_FILENAME} !-d >> !combined_directory!.htaccess
)
)

------

254 :デフォルトの名無しさん:2023/04/27(木) 00:51:53.98 ID:DnKcM+QL.net
自己解決しました。
理屈がよくわかりませんが、!の直前に^^とすることでエスケープすることができました
echo RewriteCond %%{REQUEST_FILENAME} !-f >> !combined_directory!.htaccess
echo RewriteCond %%{REQUEST_FILENAME} !-d >> !combined_directory!.htaccess

echo RewriteCond %%{REQUEST_FILENAME} ^^!-f >> !combined_directory!.htaccess
echo RewriteCond %%{REQUEST_FILENAME} ^^!-d >> !combined_directory!.htaccess

お騒がせいたしました。

255 :デフォルトの名無しさん:2023/04/27(木) 01:12:28.56 ID:RXLaISm2.net
^^

256 :デフォルトの名無しさん:2023/04/28(金) 00:51:43.20 ID:aBUvFTO3.net
>>254
なんでだろう
^^どころか^も使わないものな

257 :デフォルトの名無しさん:2023/05/05(金) 12:47:19.73 ID:Tmh5Tg58.net
バッチファイルをvbsに移植してってAIに投げたらやってくれたんでPythonも頼んだらこっちも成功
妙な制限から卒業できるぞ

258 :デフォルトの名無しさん:2023/05/05(金) 13:40:50.07 ID:Aaus9EG8.net
c#がいいんじゃないか
pythonは入れてない人が殆どだろうし、c#ならwindows全員入ってる
まあ一旦コンパイルしないといけないけど

259 :デフォルトの名無しさん:2023/05/05(金) 20:08:22.78 ID:cXUEGYUP.net
だったらC#はpowershellからコンパイルなしで使えるからpowershellがいいんじゃないか
実際powershellとC#ごっちゃにして使ってるぞ

260 :デフォルトの名無しさん:2023/05/05(金) 20:13:58.35 ID:jijjo6rD.net
powershellはダブルクリックで動かんから個人ユーザーには向かない

261 :デフォルトの名無しさん:2023/05/05(金) 21:08:13.64 ID:oeszHJgX.net
いやPowershellはexe化できるからダブルクリック起動も余裕だろ

262 :デフォルトの名無しさん:2023/05/05(金) 21:25:45.96 ID:Aaus9EG8.net
powershellはイニシャルコストが高いんだよな
PC起動後初回起動で相当待たされる
よく使う人にはいいんだろうが、1ヶ月に数回とかだと苦痛なんだよ

263 :デフォルトの名無しさん:2023/05/05(金) 23:33:04.65 ID:VDYHFDsH.net
昔はVBランタイムや
.NET Frameworkも起動遅かったよなー

165 KB
新着レスの表示

掲示板に戻る 全部 前100 次100 最新50
名前: E-mail (省略可) :

read.cgi ver.24052200