拡張子が .cmd または .bat のバッチファイルのスクリプティング(プログラミング)に関わる
質問,テクニック(JScript,Perl等の埋め込みなど含む),関連情報のためのスレです
※何でも無理矢理バッチでやろうとせず、WSH等の使用も検討しましょう
過去スレ
%13 http://mevius.2ch.net/test/read.cgi/tech/1542779527/
%12 http://mevius.2ch.net/test/read.cgi/tech/1489207631/
%11 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://pc11.2ch.net/test/read.cgi/tech/1197881068/
【.cmd】 バッチファイルスクリプト %1 【.bat】
http://pc11.2ch.net/test/read.cgi/tech/1178281991/
バッチファイルプログラミング 3.bat
http://pc11.2ch.net/test/read.cgi/tech/1148485555/
バッチファイルプログラミング 2.bat
http://pc8.2ch.net/test/read.cgi/tech/1104911889/
バッチファイルプログラミング質問スレ
http://pc5.2ch.net/test/read.cgi/tech/1040614686/
【.cmd】 バッチファイルスクリプト %14 【.bat】
■ このスレッドは過去ログ倉庫に格納されています
2020/08/15(土) 07:00:26.64ID:f3kW5kCx
2020/08/25(火) 10:40:55.06ID:QTO1Ka7Y
2020/08/25(火) 11:04:16.63ID:tde3aaGe
コマンドライン解析で一度、パイプで二度
2020/08/25(火) 15:32:57.82ID:e1SePToE
難問のような書き方ができないのが初心者
難問のような書き方を回避するのが上級者、時間の無駄なので
難問のような書き方を回避するのが上級者、時間の無駄なので
2020/08/25(火) 17:31:06.89ID:DIRbM727
echo a^^b | find "ab"
ab
ab
2020/08/26(水) 06:29:54.99ID:uY0vxId0
https://stackoverrun.com/ja/q/1204675
昨日これにハマってた
こんなエスケープの仕方、気付けるかってのw
俺はリダイレクトじゃなくてfor do の()内でfindstrの後ろに)や&&がある時にダメだった
長いと見辛くなるけど()を付けずに1行で書くとエスケープ無くとも問題ない
findstrもsetと同じく基本的には改行で終わるようにするかサブルーチン呼んでネスト外にした方がいいっぽい
>>40 いやほんとそれな
なるべくネストさせない書き方だったりロジックが大事
昨日これにハマってた
こんなエスケープの仕方、気付けるかってのw
俺はリダイレクトじゃなくてfor do の()内でfindstrの後ろに)や&&がある時にダメだった
長いと見辛くなるけど()を付けずに1行で書くとエスケープ無くとも問題ない
findstrもsetと同じく基本的には改行で終わるようにするかサブルーチン呼んでネスト外にした方がいいっぽい
>>40 いやほんとそれな
なるべくネストさせない書き方だったりロジックが大事
2020/08/26(水) 08:34:28.36ID:PfiO/aOo
トラブルが嫌なら全部一行ずつ書けばいい
あとはcallとかgotoで制御して
そもそも初級者は何を回避したらいいか判別できない
ハマった経験が無いからね
あとはcallとかgotoで制御して
そもそも初級者は何を回避したらいいか判別できない
ハマった経験が無いからね
2020/08/26(水) 08:42:47.76ID:Aw0pMxIV
stackoverrunなんてパクリクソサイト使うんじゃねー
stackoverflow見ろ
https://stackoverflow.com/questions/4982802/escaping-a-quote-in-findstr-search-string
stackoverflow見ろ
https://stackoverflow.com/questions/4982802/escaping-a-quote-in-findstr-search-string
45デフォルトの名無しさん
2020/08/26(水) 09:18:45.66ID:3xqKZ5M9 >>44
ここはあめぞうのパクリサイトですお
ここはあめぞうのパクリサイトですお
2020/09/03(木) 14:07:53.97ID:k8mfa657
指定フォルダ配下の全フォルダに対してプログラムを実行したいんですが、
batってフォルダかどうかってどう判別すればいいんですか?
Pythonのisdirみたいなことって出来ますか?
batってフォルダかどうかってどう判別すればいいんですか?
Pythonのisdirみたいなことって出来ますか?
2020/09/03(木) 14:42:52.91ID:+v/Eop6e
>>46
フォルダに必ずあるファイルの存在チェック
if exist "フォルダ\." echo フォルダです
又はdirコマンドの助けを借りるとか、他にもやり方はありそう
>nul 2>&1 (dir /ad "フォルダ"|find "<DIR>")&&echo フォルダです
フォルダに必ずあるファイルの存在チェック
if exist "フォルダ\." echo フォルダです
又はdirコマンドの助けを借りるとか、他にもやり方はありそう
>nul 2>&1 (dir /ad "フォルダ"|find "<DIR>")&&echo フォルダです
2020/09/03(木) 14:52:00.22ID:+v/Eop6e
あれ、.や..を指定するとダメみたい\のみで
間違って覚えてたのかな
間違って覚えてたのかな
2020/09/03(木) 15:38:32.84ID:14mNqQ/J
> 指定フォルダ配下の全フォルダに対してプログラムを実行
> isdirみたいな
for /r "c:\test" %%G in (.) do (
echo "%%G" "%%~aG"
call :sub "%%~fG"
)
pause &exit /b
:sub
set "a=%~a1"
if "%a:~0,1%"=="d" echo folder
exit /b
> isdirみたいな
for /r "c:\test" %%G in (.) do (
echo "%%G" "%%~aG"
call :sub "%%~fG"
)
pause &exit /b
:sub
set "a=%~a1"
if "%a:~0,1%"=="d" echo folder
exit /b
2020/09/03(木) 20:06:56.41ID:cSGnh9i3
if exist Folder\NUL
NULとかのデバイスが存在すればフォルダ
NULとかのデバイスが存在すればフォルダ
5146
2020/09/03(木) 21:43:59.26ID:s/SMQArb ありがとうございます
いろいろなやり方があるんですね
いろいろなやり方があるんですね
2020/09/03(木) 23:29:38.18ID:YSxN3SpI
誰か挙げてくると思ってたけど嫌われてんの?w > forfiles
forfiles には @isdir というまんまディレクトリ判定のがある
他にもまぁ便利っちゃ便利なんだけど、遅いのであんまり使わない forfiles
forfiles には @isdir というまんまディレクトリ判定のがある
他にもまぁ便利っちゃ便利なんだけど、遅いのであんまり使わない forfiles
53デフォルトの名無しさん
2020/09/04(金) 00:30:01.26ID:kQRqRY30 xpで使えないと駄目だろ
2020/09/04(金) 23:58:55.74ID:1jfeDIRi
XP... 今時…
2020/09/05(土) 07:15:55.93ID:6fK9k7zC
cd folder && program でいいやろ…
2020/09/10(木) 03:56:31.22ID:udh9kkuM
@echo off &setlocal enabledelayedexpansion
set MD5=c472a022eb426cf1733a36e08b31c9f9
set T=0123456789ABCDEFGHIJKLMNOPQRSTUV
for /L %%i in (0,1,25) do (
set /a L=5*%%i/8, L*=2, H=L+2, R=5*%%i%%8
call set /a "N=0x%%MD5:~!H!,2%%%%MD5:~!L!,2%%>>R&31
echo !N!
call set HASH=!HASH!%%T:~!N!,1%%
)
echo "%HASH%"
if "%HASH%"=="4MS0AHCT22R2VP97M1ONOO4PP7" ( echo OK) else ( echo Fail)
pause
ちょっと誰か助けてくれ。気になって眠れずこんな時間になってしまった
エスケープの仕方を教えて欲しい
上ので動いてるんだけどN左の引用符を外して
call set /a N=0x%%MD5:~!H!,2%%%%MD5:~!L!,2%%^>^>R^&31
call set /a N=0x%%MD5:~!H!,2%%%%MD5:~!L!,2%%^^^>^^^>R^^^&31
call set /a N=0x%%MD5:~!H!,2%%%%MD5:~!L!,2%%^^^^^>^^^^^>R^^^^^&31
とか
call set /a N^=0x%%MD5^:^~!H!^,2%%%%MD5^:^~!L!^,2%%^>^>R^&31
call set /a N^^^=0x%%MD5^^^:^^^~!H!^^^,2%%%%MD5^^^:^^^~!L!^^^,2%%^^^>^^^>R^^^&31
とか%重ねたりとか何時間も色々試してみたけどNが空になる
何にどれだけエスケープが必要なのかのロジックが知りたい
forとcallで2段なんだと思うんだけど。。
分かる人居たらお願いします
set MD5=c472a022eb426cf1733a36e08b31c9f9
set T=0123456789ABCDEFGHIJKLMNOPQRSTUV
for /L %%i in (0,1,25) do (
set /a L=5*%%i/8, L*=2, H=L+2, R=5*%%i%%8
call set /a "N=0x%%MD5:~!H!,2%%%%MD5:~!L!,2%%>>R&31
echo !N!
call set HASH=!HASH!%%T:~!N!,1%%
)
echo "%HASH%"
if "%HASH%"=="4MS0AHCT22R2VP97M1ONOO4PP7" ( echo OK) else ( echo Fail)
pause
ちょっと誰か助けてくれ。気になって眠れずこんな時間になってしまった
エスケープの仕方を教えて欲しい
上ので動いてるんだけどN左の引用符を外して
call set /a N=0x%%MD5:~!H!,2%%%%MD5:~!L!,2%%^>^>R^&31
call set /a N=0x%%MD5:~!H!,2%%%%MD5:~!L!,2%%^^^>^^^>R^^^&31
call set /a N=0x%%MD5:~!H!,2%%%%MD5:~!L!,2%%^^^^^>^^^^^>R^^^^^&31
とか
call set /a N^=0x%%MD5^:^~!H!^,2%%%%MD5^:^~!L!^,2%%^>^>R^&31
call set /a N^^^=0x%%MD5^^^:^^^~!H!^^^,2%%%%MD5^^^:^^^~!L!^^^,2%%^^^>^^^>R^^^&31
とか%重ねたりとか何時間も色々試してみたけどNが空になる
何にどれだけエスケープが必要なのかのロジックが知りたい
forとcallで2段なんだと思うんだけど。。
分かる人居たらお願いします
2020/09/10(木) 06:03:46.49ID:v191ihhK
こういうのは嫌なのか?
call set /a N=0x%%MD5:~!H!,2%%%%MD5:~!L!,2%%">>"R"&"31
call set /a N=0x%%MD5:~!H!,2%%%%MD5:~!L!,2%%">>"R"&"31
2020/09/10(木) 08:08:01.59ID:udh9kkuM
>>57
ありがとう
それでも動いたし以下でも行けた
call set /a N=0x%%MD5:~!H!,2%%%%MD5:~!L!,2%%">>R&31
という事は右シフトとアンドだけが問題で他は関係無いっぽい
^だけじゃ出来ないのかな
ありがとう
それでも動いたし以下でも行けた
call set /a N=0x%%MD5:~!H!,2%%%%MD5:~!L!,2%%">>R&31
という事は右シフトとアンドだけが問題で他は関係無いっぽい
^だけじゃ出来ないのかな
2020/09/13(日) 15:25:35.94ID:W8TB3CjN
バッチファイルでメッセージボックスを表示してレジストリのバックアップをするとエラーになります
なんででしょうか
ご教示よろしくお願いいたします
Win7 HP SP1 x64
コード
@echo off
set title=VBScript
set text=%~nx0ファイルを実行しますか?
set type=52
set tmp=%TEMP%\temp.vbs
echo WScript.Quit(MsgBox("%text%",%type%,"%title%")) > %tmp% & cscript //nologo %tmp%
if errorlevel 7 goto end
reg export "HKCR\*" "%USERPROFILE%\Desktop\hoge.reg" /y
echo.
pause
goto end
:end
del %tmp%
exit
エラーメッセージ
エラー: ファイルに書き込めません。ディスクまたはファイル システムにエラーがある
可能性があります。
なんででしょうか
ご教示よろしくお願いいたします
Win7 HP SP1 x64
コード
@echo off
set title=VBScript
set text=%~nx0ファイルを実行しますか?
set type=52
set tmp=%TEMP%\temp.vbs
echo WScript.Quit(MsgBox("%text%",%type%,"%title%")) > %tmp% & cscript //nologo %tmp%
if errorlevel 7 goto end
reg export "HKCR\*" "%USERPROFILE%\Desktop\hoge.reg" /y
echo.
pause
goto end
:end
del %tmp%
exit
エラーメッセージ
エラー: ファイルに書き込めません。ディスクまたはファイル システムにエラーがある
可能性があります。
2020/09/13(日) 15:53:37.94ID:UUr/oA+t
たぶんディスクまたはファイルシステムにエラーがある
2020/09/13(日) 16:22:35.50ID:rbJ0gfd+
実行してないけど多分&で繋いだところで、まだ%tmp%ファイルが作られてないんじゃないかな
ついでに結果判定の行も実行前に通過しちゃいそう
ついでに結果判定の行も実行前に通過しちゃいそう
2020/09/13(日) 17:33:48.42ID:rbJ0gfd+
実行してみた
原因は%tmp%を変更したからだね(おそらくregコマンドがtmpを使ってる)
%tmp%→%tmpfile%とでもしとけばいい
原因は%tmp%を変更したからだね(おそらくregコマンドがtmpを使ってる)
%tmp%→%tmpfile%とでもしとけばいい
2020/09/13(日) 17:52:08.11ID:W8TB3CjN
2020/09/14(月) 18:50:01.56ID:QRPjjbWO
なんじゃそれ
2020/09/15(火) 08:02:48.52ID:zq4P2IYm
昔はバカコーダーの代表格だったif else if...でひたすら羅列してるやつ、くっそ遅かったのに
今win10だとforで回すより速いんだがw 試して思わず吹いたw
XP機なんてもう無いから比較出来んけど
専門用語よく分からんがプリプロセッサだかインタープリタだかがセミコンパイル?最適化?してくれるようになったん?
カビ臭いセオリーに囚われてちゃイカンようだ
今win10だとforで回すより速いんだがw 試して思わず吹いたw
XP機なんてもう無いから比較出来んけど
専門用語よく分からんがプリプロセッサだかインタープリタだかがセミコンパイル?最適化?してくれるようになったん?
カビ臭いセオリーに囚われてちゃイカンようだ
2020/09/15(火) 10:14:02.00ID:QjU8NMVB
for do 後の文中に call を入れると遅くなるのを何とかして欲しい。
処理時間が倍増する。下手すると何十倍もかかる
処理時間が倍増する。下手すると何十倍もかかる
67デフォルトの名無しさん
2020/09/15(火) 10:25:56.06ID:X+gTbBjK フロッピーディスクでディスクキャッシュ無効にしてbat走らせると
1行ごとにbatファイルを再読み込みしているのが実感できて楽しいよ
1行ごとにbatファイルを再読み込みしているのが実感できて楽しいよ
2020/09/15(火) 14:56:26.93ID:zq4P2IYm
>>66
call set とかで多段展開よく使うんだけど
callの代わりにfor文にしてfor変数と遅延展開にして callやめたら確かに速くなったわ
見た目上は call set の方がシンプルで速そうなんだがなー
速い書き方模索してたので助かった. ありがとう
call set とかで多段展開よく使うんだけど
callの代わりにfor文にしてfor変数と遅延展開にして callやめたら確かに速くなったわ
見た目上は call set の方がシンプルで速そうなんだがなー
速い書き方模索してたので助かった. ありがとう
2020/09/15(火) 15:12:45.99ID:zo2IeaGi
callの時点で子タスク生成して構文解釈まで行われるじゃん
速いはず無い
速いはず無い
2020/09/15(火) 15:29:08.58ID:QjU8NMVB
おまけにバッチ優先だから気味が悪い
@echo off
echo set a=NG > set.bat
call set a=OK
echo %a%
pause
@echo off
echo set a=NG > set.bat
call set a=OK
echo %a%
pause
2020/09/15(火) 16:07:46.64ID:zq4P2IYm
偶にコマンド名と同じファイル名付けてトラブるバカが居るけどそれは流石にイチャモンが過ぎるだろw
2020/09/15(火) 16:17:43.50ID:QjU8NMVB
普通は内部コマンド優先
73デフォルトの名無しさん
2020/09/15(火) 18:34:43.10ID:X+gTbBjK 毎回set.batがあるかpath探してるのか?
2020/09/15(火) 18:52:07.91ID:QjU8NMVB
そうだと思う。たぶん exe とかも捜してる。
余計な処理で時間のロス
余計な処理で時間のロス
2020/09/15(火) 19:48:46.31ID:/ea/Q9+g
callって元々バッチファイルを呼ぶためのコマンドだしな
環境変数を遅延展開するために使えるなんて公式ヘルプには載ってない
環境変数を遅延展開するために使えるなんて公式ヘルプには載ってない
2020/09/15(火) 23:46:39.63ID:otyKrGil
2020/09/18(金) 22:08:23.94ID:uEsKVG5e
windows板でいい答えが出なかったんでこっちに来ました。
windows10でログオンしなければ走らないプログラム(TV録画予約ソフト)があるので、Windows の自動ログオンを有効にし、
Autoexec.batに
rundll32 user32.dll, LockWorkStation
と記述して直ちにロックすることとしています。
しかしながら、これは不意の停電などで再起動したときの為であって、
自分自身がPCの前にいる場合は、ロック解除をしなければならないのが面倒です。
そこで、バッチファイルで
15秒待つ
その間に何もキーが押されなかったら、
rundll32 user32.dll, LockWorkStation
を実行
何かキーが押されたら、バッチファイルを終了
としたいのですが、どうしたらいいでしょう
N88BASIC(86)だとこんなイメージ
(10行の "to 1000"は適当に調節)
10 for i=1 to 1000
20 a$=inkey$
30 if a$<>"" then goto 70
40 next i
50 rundll32 user32.dll, LockWorkStation
60 end
70 i=1000:next i
80 end
ちなみに今は、autoexec.bat に
TIMEOUT /T 15 /NOBREAK
rundll32 user32.dll, LockWorkStation
として、すぐに作業したい場合は15秒の間にcmdの右上のxをクリックしてコマンドプロンプトを閉じています
windows10でログオンしなければ走らないプログラム(TV録画予約ソフト)があるので、Windows の自動ログオンを有効にし、
Autoexec.batに
rundll32 user32.dll, LockWorkStation
と記述して直ちにロックすることとしています。
しかしながら、これは不意の停電などで再起動したときの為であって、
自分自身がPCの前にいる場合は、ロック解除をしなければならないのが面倒です。
そこで、バッチファイルで
15秒待つ
その間に何もキーが押されなかったら、
rundll32 user32.dll, LockWorkStation
を実行
何かキーが押されたら、バッチファイルを終了
としたいのですが、どうしたらいいでしょう
N88BASIC(86)だとこんなイメージ
(10行の "to 1000"は適当に調節)
10 for i=1 to 1000
20 a$=inkey$
30 if a$<>"" then goto 70
40 next i
50 rundll32 user32.dll, LockWorkStation
60 end
70 i=1000:next i
80 end
ちなみに今は、autoexec.bat に
TIMEOUT /T 15 /NOBREAK
rundll32 user32.dll, LockWorkStation
として、すぐに作業したい場合は15秒の間にcmdの右上のxをクリックしてコマンドプロンプトを閉じています
2020/09/18(金) 22:14:12.38ID:uEsKVG5e
こちらの質問はもしかしたらスレ違いかもしれませんが。
あるフォルダ内のファイル一覧をテキストファイルに落としたいと思っています。
一太郎Ver4.3付属のMS-DOS2.11以来、DOSに慣れ親しんでいる私は、
CMD (又は見栄を張ってpowershell)で、
D:\hoge\hoge>dir > list.txt
なんてやってしまうのですが、
Windows10ネイティブのナウなヤングはWindows上で、どのようにやるのでしょうか
コマンドプロンプトなんて使ったことのない、普通のWindowsユーザーさんに教える必要があります
あるフォルダ内のファイル一覧をテキストファイルに落としたいと思っています。
一太郎Ver4.3付属のMS-DOS2.11以来、DOSに慣れ親しんでいる私は、
CMD (又は見栄を張ってpowershell)で、
D:\hoge\hoge>dir > list.txt
なんてやってしまうのですが、
Windows10ネイティブのナウなヤングはWindows上で、どのようにやるのでしょうか
コマンドプロンプトなんて使ったことのない、普通のWindowsユーザーさんに教える必要があります
2020/09/19(土) 03:30:06.61ID:1TUbP9BW
dir /b > list.txt
2020/09/19(土) 05:19:51.44ID:RfEWMQRr
2020/09/19(土) 06:32:50.16ID:aPDv4PNE
キーを限定してもいいならchoice
2020/09/19(土) 06:41:28.16ID:aPDv4PNE
2020/09/19(土) 07:30:51.34ID:RfEWMQRr
choiceはotherが設定出来たら言うことなしだったのになぁ
forもcontinueとbreakさえあれば。。
あと一歩をわざと使いづらくしてるのかと邪推してしまうわ
forもcontinueとbreakさえあれば。。
あと一歩をわざと使いづらくしてるのかと邪推してしまうわ
2020/09/20(日) 20:29:41.51ID:QtwFpjW/
恐れ入ります。初心者です。
約400個の.m4aファイルを.mp3形式に変換しようとしています。
以下のようなバッチファイル作成において、出力ファイル名の記述が大変なのですが、
ffmpeg -i aa001.m4a -ab 48k aa001.mp3
ffmpeg -i bb004.m4a -ab 48k bb004.mp3
ffmpeg -i c030.m4a -ab 48k c030.mp3
入力ファイル名の文字列だけを変数のようにして、出力ファイル名として利用できないでしょうか?
以下のようなイメージです。
ffmpeg -i aa001.m4a -ab 48k 変数.mp3
ffmpeg -i bb004.m4a -ab 48k 変数.mp3
ffmpeg -i c030.m4a -ab 48k 変数.mp3
説明は面倒かと思いますので、参照すべきURL、
もしくは検索ワードだけでも教えて頂けると助かります。
約400個の.m4aファイルを.mp3形式に変換しようとしています。
以下のようなバッチファイル作成において、出力ファイル名の記述が大変なのですが、
ffmpeg -i aa001.m4a -ab 48k aa001.mp3
ffmpeg -i bb004.m4a -ab 48k bb004.mp3
ffmpeg -i c030.m4a -ab 48k c030.mp3
入力ファイル名の文字列だけを変数のようにして、出力ファイル名として利用できないでしょうか?
以下のようなイメージです。
ffmpeg -i aa001.m4a -ab 48k 変数.mp3
ffmpeg -i bb004.m4a -ab 48k 変数.mp3
ffmpeg -i c030.m4a -ab 48k 変数.mp3
説明は面倒かと思いますので、参照すべきURL、
もしくは検索ワードだけでも教えて頂けると助かります。
2020/09/20(日) 20:38:05.68ID:bYdUCAyz
m4a ファイルが D:\M4A\ に入っているとして
for %%L in (D:\M4A\*.m4a) do ffmpeg -i %%L -ab 48k %%~nL.mp3
for %%L in (D:\M4A\*.m4a) do ffmpeg -i %%L -ab 48k %%~nL.mp3
2020/09/20(日) 20:57:17.46ID:QtwFpjW/
2020/10/03(土) 10:47:40.18ID:wKgZGKzj
入力された文字列を使ってコマンドを走らせようとしてるんだけど変数に値は入るんだけどコマンドの方には空っぽで出力されるんだがなにか処理っているの?
%で囲むだけでいいよね?
%で囲むだけでいいよね?
2020/10/03(土) 10:53:42.03ID:HRjNW00f
2020/10/03(土) 10:57:51.23ID:wKgZGKzj
>>88
それはなんですか?
それはなんですか?
90デフォルトの名無しさん
2020/10/04(日) 00:03:10.85ID:1nqCsM3n2020/10/04(日) 00:16:53.72ID:VPBkvUyg
上から目線怖い
2020/10/07(水) 22:42:28.13ID:8t5FIA98
set /p moji=入力するのじゃ
echo 出力するでおじゃる %moji%
うん、何の処理もいらないな
echo 出力するでおじゃる %moji%
うん、何の処理もいらないな
2020/10/08(木) 13:42:17.79ID:BulPjeqX
遅延展開に関して setlocal /? にはロクな説明無いよ
詳しい説明が書かれているのは set /? の方
まあ87みたいなアホはスルーしとけ
詳しい説明が書かれているのは set /? の方
まあ87みたいなアホはスルーしとけ
2020/10/09(金) 12:07:08.64ID:xYDxCkF1
入力処理を2回する時ってなにか特殊な処理とかいるの?
YESNO→文字列入力で
後者の処理で変数に文字列が入らない
YESNO→文字列入力で
後者の処理で変数に文字列が入らない
2020/10/09(金) 12:17:29.66ID:ZREy0Q0x
96デフォルトの名無しさん
2020/10/09(金) 12:41:22.12ID:xYDxCkF1 >>95
@echo off
@setlocal
cd /d %~dp0
:START
rem 初期化
set NUM_INPUT=
set ID_INPUT=
set URL_INPUT=
set /P NUM_INPUT="URLはどちらですか?(1:DL/2:ok.ru/9:アップデート):"
IF %NUM_INPUT% equ 1 (
set /P ID_INPUT="IDを入力してください: "
youtube-dl https://lb.loadloadingfreevideo.top/hls/%ID_INPUT%/%ID_INPUT%.m3u8 --user-agent "Mozilla/5.0 (Intel Mac OS X)"
) ELSE IF %NUM_INPUT% equ 2 (
set /P URL_INPUT="URLを入力してください: "
echo 入力した文字列は %URL_INPUT% です。
youtube-dl %URL_INPUT%
) ELSE IF %NUM_INPUT% equ 9 (
youtube-dl -U
) ELSE (
goto :START
)
pause
VisualBatで確認したところ2回目の入力値の変数には値が入ってくるんだが出力されたときには空欄で出力される…
@echo off
@setlocal
cd /d %~dp0
:START
rem 初期化
set NUM_INPUT=
set ID_INPUT=
set URL_INPUT=
set /P NUM_INPUT="URLはどちらですか?(1:DL/2:ok.ru/9:アップデート):"
IF %NUM_INPUT% equ 1 (
set /P ID_INPUT="IDを入力してください: "
youtube-dl https://lb.loadloadingfreevideo.top/hls/%ID_INPUT%/%ID_INPUT%.m3u8 --user-agent "Mozilla/5.0 (Intel Mac OS X)"
) ELSE IF %NUM_INPUT% equ 2 (
set /P URL_INPUT="URLを入力してください: "
echo 入力した文字列は %URL_INPUT% です。
youtube-dl %URL_INPUT%
) ELSE IF %NUM_INPUT% equ 9 (
youtube-dl -U
) ELSE (
goto :START
)
pause
VisualBatで確認したところ2回目の入力値の変数には値が入ってくるんだが出力されたときには空欄で出力される…
97デフォルトの名無しさん
2020/10/09(金) 13:22:34.61ID:MFDBon0y すみません、自己解決しました
2020/10/09(金) 13:34:07.34ID:xYDxCkF1
してないわw
2020/10/09(金) 14:11:49.12ID:ZREy0Q0x
行の解釈は、行を読み込んだ時点で解釈され、変数は置換される
()で囲まれた部分は全体で一行扱い
つまり括弧内で入力したって、それは括弧を抜けないと有効でなく
カッコ内は既に括弧前(if文の前)の値で置換済み
やっぱり上のレスと同じじゃん
()で囲まれた部分は全体で一行扱い
つまり括弧内で入力したって、それは括弧を抜けないと有効でなく
カッコ内は既に括弧前(if文の前)の値で置換済み
やっぱり上のレスと同じじゃん
100デフォルトの名無しさん
2020/10/09(金) 14:35:46.06ID:ZREy0Q0x 解決策は
構造を変えて、入力と参照のどちらかをif文から出すか
遅延環境変数を使うか
call文で内部の処理をサブルーチンとして呼び出す形にするか
構造を変えて、入力と参照のどちらかをif文から出すか
遅延環境変数を使うか
call文で内部の処理をサブルーチンとして呼び出す形にするか
101デフォルトの名無しさん
2020/10/09(金) 14:36:34.08ID:0eCLusxq @echo off &setlocal
pushd "%~0\.."
:MAIN
set N=
set /p N= 選択 [ 1:ID, 2:URL, 9:Update ] :
if "%N%"=="1" call :DL_ID
if "%N%"=="2" call :DL_URL
if "%N%"=="9" call :UPDATE
goto :MAIN
:DL_ID
set ID=
set /p ID= ID? :
:: ここで入力値を確認するかfindstrでIDの形式として正しいかcheck
youtube-dl "https://lb.loadloadingfreevideo.top/hls/%ID%/%ID%.m3u8" --user-agent "Mozilla/5.0 (Intel Mac OS X)"
exit /b
:DL_URL
set URL=
set /p URL= URL? :
:: ここで入力値確認
youtube-dl "%URL%"
exit /b
:UPDATE
youtube-dl -U
pushd "%~0\.."
:MAIN
set N=
set /p N= 選択 [ 1:ID, 2:URL, 9:Update ] :
if "%N%"=="1" call :DL_ID
if "%N%"=="2" call :DL_URL
if "%N%"=="9" call :UPDATE
goto :MAIN
:DL_ID
set ID=
set /p ID= ID? :
:: ここで入力値を確認するかfindstrでIDの形式として正しいかcheck
youtube-dl "https://lb.loadloadingfreevideo.top/hls/%ID%/%ID%.m3u8" --user-agent "Mozilla/5.0 (Intel Mac OS X)"
exit /b
:DL_URL
set URL=
set /p URL= URL? :
:: ここで入力値確認
youtube-dl "%URL%"
exit /b
:UPDATE
youtube-dl -U
102デフォルトの名無しさん
2020/10/09(金) 14:46:41.82ID:xYDxCkF1103デフォルトの名無しさん
2020/10/09(金) 19:13:39.03ID:bdkjFn4I ここの人たちはコマンドプロンプトのことを「シェル」って呼ぶ?
あまり一般的じゃないですよね?
シェルって言ったらBashとかあっちのイメージなんですが
あまり一般的じゃないですよね?
シェルって言ったらBashとかあっちのイメージなんですが
104デフォルトの名無しさん
2020/10/09(金) 19:55:04.43ID:/2wG1kS2 dosshellよりはシェルっぽい
105デフォルトの名無しさん
2020/10/09(金) 20:56:01.11ID:bdkjFn4I Wiki見るとジャンル的にはコマンドプロンプトもコマンドラインインタプリタ(シェル)みたいなんですが、
あんまりシェルって読んでる人いないですよね
あんまりシェルって読んでる人いないですよね
106デフォルトの名無しさん
2020/10/09(金) 20:57:57.12ID:verB6kW/ そりゃWinfowのシェルはエクスプローラーだもの
107デフォルトの名無しさん
2020/10/09(金) 21:33:57.08ID:pYgpY0Tn cmdがコンソールくっついてんのは設計の失敗だよなあ
powershellでも同じ轍を踏んでるし
客から黒い画面邪魔って何億回言われてんだろう
あふぉが過ぎる
powershellでも同じ轍を踏んでるし
客から黒い画面邪魔って何億回言われてんだろう
あふぉが過ぎる
108デフォルトの名無しさん
2020/10/09(金) 21:38:55.75ID:0CTZ1NG3 黒い画面なしで起動することは可能なんだから、
何億回も言われてるのはお前の問題
何億回も言われてるのはお前の問題
109デフォルトの名無しさん
2020/10/09(金) 22:58:55.17ID:4BFKVw+u 黒いの嫌なら白に設定しろ
110デフォルトの名無しさん
2020/10/09(金) 23:53:38.68ID:760t1BpC111デフォルトの名無しさん
2020/10/10(土) 00:20:53.75ID:9msS7xxw いや、Updateと普通のURLはbatに組み込まない方がいいだろ
直接使ってもさほど変わらない
ok.ru専属batにしたほうがいい
直接使ってもさほど変わらない
ok.ru専属batにしたほうがいい
112デフォルトの名無しさん
2020/10/10(土) 03:21:12.75ID:I6aD6+Ht >>111
ok.ruだけじゃないんだよ某サイト
ok.ruだけじゃないんだよ某サイト
113デフォルトの名無しさん
2020/10/11(日) 08:59:02.91ID:uWZZ3h6O batのウィンドウを非表示で実行するためにvbs噛ませてたんだけど「このスクリプトには、悪質なコンテンツが含まれているため、ウイルス対策ソフトウェアによりブロックされています。」って言われるようになっちゃった
114デフォルトの名無しさん
2020/10/11(日) 09:08:42.65ID:/L2D78D0 >>113
batのショートカットを最小化で実行するとかは
batのショートカットを最小化で実行するとかは
115デフォルトの名無しさん
2020/10/11(日) 20:13:47.65ID:P0HYJFd1116デフォルトの名無しさん
2020/10/11(日) 20:15:27.38ID:P0HYJFd1117デフォルトの名無しさん
2020/10/11(日) 20:31:14.01ID:/L2D78D0118デフォルトの名無しさん
2020/10/11(日) 21:12:48.29ID:P0HYJFd1119116
2020/10/11(日) 22:14:08.72ID:P0HYJFd1 勘違いだった
タスクスケジューラにショートカットを指定してもbatファイル本体の指定に切り替わるみたいなので
startコマンドにminオプション付けてbatファイル本体を実行してたのを
ショートカットで最小に指定してもdos窓が一瞬表示されると間違って覚えてた、恥ずかしい
タスクスケジューラにショートカットを指定してもbatファイル本体の指定に切り替わるみたいなので
startコマンドにminオプション付けてbatファイル本体を実行してたのを
ショートカットで最小に指定してもdos窓が一瞬表示されると間違って覚えてた、恥ずかしい
120デフォルトの名無しさん
2020/10/19(月) 21:03:48.43ID:i1CJTVJK 「コマンドプロンプトは黒い画面に文字がたくさん出て怖い」→「チャット風」にしてみた LINEみたいで「分かりやすい」と話題に
https://nlab.itmedia.co.jp/nl/articles/2010/19/news073.html
https://nlab.itmedia.co.jp/nl/articles/2010/19/news073.html
121デフォルトの名無しさん
2020/10/20(火) 00:04:16.20ID:jnlumX7z122デフォルトの名無しさん
2020/10/20(火) 01:21:04.79ID:0/xBmjm3 >>121
MIT
MIT
123デフォルトの名無しさん
2020/10/20(火) 11:26:40.30ID:jR74MZK7 使ってないけどこのダサい画面なんとかならんのかね
特に色使い
特に色使い
124デフォルトの名無しさん
2020/11/10(火) 07:53:43.00ID:CPbRFFCx125デフォルトの名無しさん
2020/11/27(金) 17:54:04.98ID:w5Az7J0d cd ... 点3つ で2階層上のディレクトリに上がれるのって
どのWindowsの機能だっけ?
どのWindowsの機能だっけ?
126デフォルトの名無しさん
2020/11/27(金) 23:22:30.42ID:MUwYgmwm 本家Windowsの末裔である95
127デフォルトの名無しさん
2020/11/27(金) 23:22:47.95ID:MUwYgmwm からMe
128デフォルトの名無しさん
2021/01/08(金) 22:35:28.22ID:BCe3tfGB コマンドプロンプトのコピペが化ける。
全角の二重引用符を貼り付けると半角になった。
他にも化ける文字ってあるのかな
全角の二重引用符を貼り付けると半角になった。
他にも化ける文字ってあるのかな
129デフォルトの名無しさん
2021/01/15(金) 23:17:05.02ID:na+cGcWl forループでフォルダ内のファイルを取得するときにファイル名だけ抽出するコマンドってなんでしょう?
「%~n.txt」とか色々試したのですが、何を入れてもそんなファイルは存在しないといわれてしまいます(「%~n.txt」なら「%~n.txtは存在しない」)
ググってもわからなかったのでお願いします
for %%f in (フォルダパス) do (
ここで処理したい
)
「%~n.txt」とか色々試したのですが、何を入れてもそんなファイルは存在しないといわれてしまいます(「%~n.txt」なら「%~n.txtは存在しない」)
ググってもわからなかったのでお願いします
for %%f in (フォルダパス) do (
ここで処理したい
)
130デフォルトの名無しさん
2021/01/15(金) 23:17:58.97ID:na+cGcWl >>129
これbatファイルです
これbatファイルです
131デフォルトの名無しさん
2021/01/15(金) 23:36:01.03ID:OOSIw0eU for %%f in (*.txt) do (echo %%~nf)
help for読もう
help for読もう
132デフォルトの名無しさん
2021/01/16(土) 00:20:33.58ID:MUPXwQYg for %%f in (*.txt) do (echo %%~f)
for /F "TOKENS=1" %%f in ('dir /B *.txt') do (echo %%~f)
for /F "TOKENS=1" %%f in ('dir /B *.txt') do (echo %%~f)
133デフォルトの名無しさん
2021/01/16(土) 00:25:52.93ID:xL4nSAcD それ "delims=" と勘違いしてる?
134デフォルトの名無しさん
2021/01/16(土) 00:45:01.02ID:MUPXwQYg ごめん
tokens=1はいらなかった。余計だった
tokens=1はいらなかった。余計だった
135デフォルトの名無しさん
2021/01/16(土) 00:56:21.35ID:KTlk0YqY136デフォルトの名無しさん
2021/01/16(土) 01:10:21.04ID:No4exMNc137デフォルトの名無しさん
2021/01/16(土) 01:19:53.49ID:KTlk0YqY >>136
ありがとう
ありがとう
138デフォルトの名無しさん
2021/01/25(月) 19:13:54.74ID:P1MpJdzu 質問失礼します。
複数あるフォルダのフォルダ名を、内包しているファイル名に一括変更するスクリプトを作る事は可能でしょうか?
https://f.easyuploader.app/eu-prd/upload/20210124175415_346e74754c734e59584e73676b744330.png
分かりづらく申し訳ないのですが、この様にフォルダ名を内包されたファイル名に変更したいです。
色々と調べたのですが素人故どのような書き方をすればいいのか分からず…
宜しければご教授頂きたいです 宜しくお願い致します。
複数あるフォルダのフォルダ名を、内包しているファイル名に一括変更するスクリプトを作る事は可能でしょうか?
https://f.easyuploader.app/eu-prd/upload/20210124175415_346e74754c734e59584e73676b744330.png
分かりづらく申し訳ないのですが、この様にフォルダ名を内包されたファイル名に変更したいです。
色々と調べたのですが素人故どのような書き方をすればいいのか分からず…
宜しければご教授頂きたいです 宜しくお願い致します。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 国内ホテル、既にキャンセルも 訪日客関連業界、事態見守る ★3 [蚤の市★]
- 習政権、高市首相への態度硬化 台湾有事発言で連日非難 中国 ★11 [ぐれ★]
- 橋下徹氏 外務省幹部の訪中受け「口だけ番長」へ痛烈指摘 「喧嘩は日本の完敗…なんとかっこ悪い日本か」 [冬月記者★]
- 【外国人問題】小野田紀美担当相「不法就労や不法滞在は許さない」 [シャチ★]
- 【野球】井端監督 大谷翔平、山本由伸らのWBCへの参加 「1日も早く返事ほしい」「待っててといっても、国内組が遅くなってしまう」★3 [冬月記者★]
- 【青森・はぐれ子グマがラーメン店襲撃】「笑えないです」ボコボコにしてクマを返り討ち レジェンド男性はまぶたが腫れあがり骨折 ★2 [ぐれ★]
- 中国「高市許さん😡」ジャップメディア「熊!🐻!」 [809488867]
- 中国「高市が頭を下げて謝罪しない限り、絶対に許さない」 [329329848]
- 🏡
- 女子高校生におちんちを見せる 、 頭髪薄めが発生 [485983549]
- 今季最強寒気襲来!!!!
- 【高市早苗】習近平激怒か [115996789]
