- 1 名前:デフォルトの名無しさん mailto:sage [2018/11/21(水) 14:52:07.84 ID:v84I4o+L.net]
- 拡張子が .cmd または .bat のバッチファイルのスクリプティング(プログラミング)に関わる
質問,テクニック(JScript,Perl等の埋め込みなど含む),関連情報のためのスレです。 ※何でも無理矢理バッチでやろうとせず、WSH等の使用も検討しましょう。 前スレ 【.cmd】 バッチファイルスクリプト %11 【.bat】©2ch.net echo.2ch.net/test/read.cgi/tech/1424858999/ 【.cmd】 バッチファイルスクリプト %12 【.bat】 https://mevius.5ch.net/test/read.cgi/tech/1489207631/ それ以前の過去スレ %10 peace.2ch.net/test/read.cgi/tech/1374205515/ %9 toro.2ch.net/test/read.cgi/tech/1335015478/ %8 toro.2ch.net/test/read.cgi/tech/1315844420/ %7 hibari.2ch.net/test/read.cgi/tech/1298873550/ %6 hibari.2ch.net/test/read.cgi/tech/1277465356/ %5 pc12.2ch.net/test/read.cgi/tech/1242268171/ %4 pc12.2ch.net/test/read.cgi/tech/1229955189/ %3 pc11.2ch.net/test/read.cgi/tech/1217860043/ %2 pc12.2ch.net/test/read.cgi/tech/1197881068/ %1 pc11.2ch.net/test/read.cgi/tech/1178281991/
- 70 名前:デフォルトの名無しさん mailto:sage [2019/01/14(月) 09:53:16.85 ID:e5YcHVOA.net]
- マイクロソフトがどこまでチェックしているか知らんが
コマンド追加したら干渉する可能性はあるな
- 71 名前:デフォルトの名無しさん mailto:sage [2019/01/20(日) 00:11:28.57 ID:xs+avKSw.net]
- C:\HOGE
├─aaa │ ├─old │ │ aaa1.bat │ │ │ └─src │ aaa1.bat │ ├─bbb │ ├─old │ │ bbb1.bat │ │ │ └─src │ bbb1.bat │ └─ccc ├─old │ ccc1.bat │ └─src ccc1.bat ↑のoldフォルダとその中身を一括で削除したいのですが、コマンドでは難しいでしょうか?
- 72 名前:デフォルトの名無しさん mailto:sage [2019/01/20(日) 00:13:41.92 ID:xs+avKSw.net]
- ↑HOGEの下には実際にはaaa〜cccのようなフォルダが無数にあります…
- 73 名前:デフォルトの名無しさん mailto:sage [2019/01/20(日) 00:15:44.50 ID:xs+avKSw.net]
- ↑たびたびすみません。
正確に言うと「HOGE配下に存在する"old"という名前のフォルダとその中身を全て削除する」です。
- 74 名前:デフォルトの名無しさん mailto:sage [2019/01/20(日) 02:15:14.20 ID:pk2ilGy6.net]
- for /d /r
とif文つかえばいいだけじゃん
- 75 名前:デフォルトの名無しさん mailto:sage [2019/01/20(日) 04:39:06.95 ID:K0yQSeRR.net]
- del
- 76 名前:デフォルトの名無しさん mailto:sage [2019/01/20(日) 07:09:39.32 ID:YWDkxQqJ.net]
- FOR /R C:\HOGE %%I IN (.) DO rd/s/q "%%~I\old" 2> nul
- 77 名前:デフォルトの名無しさん mailto:sage [2019/01/20(日) 07:32:36.37 ID:YWDkxQqJ.net]
- バッチにするまでもない
直接入力なら%%を%に
- 78 名前:デフォルトの名無しさん mailto:sage [2019/01/20(日) 09:22:02.93 ID:pk2ilGy6.net]
- >>76
rdのところ rd/s/q "%%~I\old\" にした方がよいと思う
- 79 名前:デフォルトの名無しさん mailto:sage [2019/01/20(日) 10:27:11.29 ID:pk2ilGy6.net]
- おいらならこう書く
for /d /r c:\hoge %a in (old) rd /q /s %a
- 80 名前:デフォルトの名無しさん mailto:sage [2019/01/20(日) 10:28:21.11 ID:xs+avKSw.net]
- >>76
どうもありがとうございます!バッチリ削除できました。 >>78 私も>>78さんのコメントを読んで例えば"old2"という名前のフォルダがあったらこれも消えてしまうのかも?と思ったのですが、そんなことはありませんでした。 でも見た目でそのような疑問を覚える人もいるかもしれないなと思い、特に不要ではあるのですが"old"のあとに"\"を付けることにしました。 ありがとうございます。
- 81 名前:デフォルトの名無しさん mailto:sage [2019/01/20(日) 10:36:33.72 ID:xs+avKSw.net]
- でもrdはディレクトリ削除コマンドなんだから最後に"\"を付けるのは不自然か…
- 82 名前:デフォルトの名無しさん mailto:sage [2019/01/20(日) 10:54:52.71 ID:YWDkxQqJ.net]
- >>78 なぜ?
>>79 ワイルドカードじゃないとオプション /D は無意味 これでもいいが FOR /R %%I IN (OLD) DO RD/S/Q "%%I" 2> NUL
- 83 名前:デフォルトの名無しさん mailto:sage [2019/01/20(日) 11:08:28.37 ID:pk2ilGy6.net]
- >>82
>ワイルドカードじゃないとオプション /D は無意味 ちゃんとフォルダのみをフ
- 84 名前:Bルタするよ、試してみてね []
- [ここ壊れてます]
- 85 名前:デフォルトの名無しさん mailto:sage [2019/01/20(日) 11:18:39.20 ID:YWDkxQqJ.net]
- そうかな?
RD の前に echo 付けて見たら? ファイルでも RD OLD がでるぞ FOR のヘルプをよく見てね
- 86 名前:デフォルトの名無しさん mailto:sage [2019/01/21(月) 21:18:15.33 ID:9WBiq3dN.net]
- ざっくり言うと、
EternalForceBlizzard.bat C:\hoge とかいうバッチが欲しいという中二に対して「俺なら!」「俺なら!」とやってた流れ…かな。 >>82 どうでもいいけど全部大文字とかやめれ。 内容は知らんが死ぬほどダサい。
- 87 名前:デフォルトの名無しさん mailto:sage [2019/01/21(月) 21:58:45.27 ID:rFmuVz+a.net]
- 今後は小文字にするよ。気が変わるかもしれんが。
forの括弧内のファイルは存在しなくてもスキップしない 例外はワイルドカードで対象はファイル /dだと対象はフォルダ ただそれだけの話だ
- 88 名前:デフォルトの名無しさん mailto:sage [2019/01/22(火) 11:52:34.58 ID:dXptnPwJ.net]
- findstrの結果に文字列を連結したいのですがうまくいきません
どうしたらよういでしょういか? cd /d %~dp0 type test1.txt | echo"りんご" & findstr "りんご" >> out.txt
- 89 名前:デフォルトの名無しさん mailto:sage [2019/01/22(火) 14:00:46.60 ID:CTNOEPFx.net]
- call :a "りんご" test1.txt > out.txt & goto :eof
:a echo %1 & findstr %1 %2
- 90 名前:デフォルトの名無しさん mailto:sage [2019/01/22(火) 15:31:22.37 ID:dXptnPwJ.net]
- >88
ありがとうございます。 [りんご] [りんごを含んだ文] [りんごを含んだ文] [りんごを含んだ文] といった感じにでました。 [りんご][りんごを含んだ文] [りんご][りんごを含んだ文] [りんご][りんごを含んだ文] という感じはならないでしょうか?
- 91 名前:デフォルトの名無しさん mailto:sage [2019/01/22(火) 15:58:11.82 ID:CTNOEPFx.net]
- call :a "りんご" test1.txt > out.txt & goto :eof
:a for /f delims^=^ eol^= %%i in ('findstr %1 %2') do echo.%1 %%i
- 92 名前:デフォルトの名無しさん mailto:sage [2019/01/22(火) 16:44:03.03 ID:dXptnPwJ.net]
- >90
おお!、うまくいきました。ありがとうございます!。 エクセルの&のように簡単なのかと思ったら以外と複雑な処理で驚きです。
- 93 名前:デフォルトの名無しさん mailto:sage [2019/01/22(火) 17:08:05.17 ID:nMQEwTi4.net]
- 単に行数を少なくするだけの&の使い方で
デバッグもメンテの面でもいい事はないんで行を分けて書いたほうがいい
- 94 名前:デフォルトの名無しさん mailto:sage [2019/01/22(火) 17:31:44.20 ID:CTNOEPFx.net]
- そういうのは質問者の方で調整よろしくお願いします
- 95 名前:デフォルトの名無しさん mailto:sage [2019/01/22(火) 18:02:51.94 ID:nMQEwTi4.net]
- >>93
別に>>90に文句言ってるわけじゃなくて 質問者が&に感心してたので、質問者にアドバイスのつもりで書いただけ
- 96 名前:デフォルトの名無しさん mailto:sage [2019/01/22(火) 18:15:04.06 ID:CTNOEPFx.net]
- 言いたい事は分かります。
はっきり言って自分用のバッチはこんな書き方はしません。 行数を抑える為に繋いでるだけなんで。 バランス見て改行します。すみません。
- 97 名前:デフォルトの名無しさん mailto:sage [2019/01/22(火) 18:27:13.64 ID:nMQEwTi4.net]
- って思ったら、質問者は&に感心してたわけじゃなくて
逆に&で簡単に書けない点が不満なんだな
- 98 名前:デフォルトの名無しさん mailto:sage [2019/01/22(火) 19:15:10.41 ID:ak2Ch+AT.net]
- Basic言語では&は文字列結合演算子だが
バッチスクリプトは出自からBasicじゃないので&は別の意味(ステートメントメント区切り)となる 文字列結合演算子自体が存在しない
- 99 名前:デフォルトの名無しさん mailto:sage [2019/01/23(水) 13:46:03.43 ID:HgbeZ9kI.net]
- 昨日の質問者です、たびたびすみません
複数ワードを処理しようとして call :a "りんご" test1.txt > out.txt :a for /f delims^=^ eol^= %%i in ('findstr %1 %2') do echo.%1 %%i call :a "みかん" test1.txt > out.txt :a for /f delims^=^ eol^= %%i in ('findstr %1 %2') do echo.%1 %%i としたところ、うまくいったのですが これが5項目くらいになると dos窓に「別のプロセスが使用中です」と表示されてしまいます。 なにかメモリ的なものがいっぱいになるのでしょうか? 回避方法はありますでしょうか?
- 100 名前:デフォルトの名無しさん mailto:sage [2019/01/23(水) 15:17:41.73 ID:HwNiCy+r.net]
- 意味不明だが?
@echo off call :a "りんご" test1.txt > out.txt call :a "みかん" test1.txt >> out.txt goto :eof :a for /f delims^=^ eol^= %%i in ('findstr %1 %2') do echo.%1 %%i
- 101 名前:デフォルトの名無しさん mailto:sage [2019/01/23(水) 15:33:11.44 ID:HwNiCy+r.net]
- 今時、メモリ不足とか滅多に無いよ。
バッチで80byte文字列の一万個の配列変数とかやったことあるけど 問題なかったよ。
- 102 名前:デフォルトの名無しさん mailto:sage [2019/01/23(水) 16:10:02.06 ID:HgbeZ9kI.net]
- >99さんの書式にするとうまくいきました
おそらく私が :a for /f delims^=^ eol^= %%i in ('findstr %1 %2') do echo.%1 %%i をいっぱい書いてしまったからかもしれません。
- 103 名前:デフォルトの名無しさん mailto:sage [2019/01/24(木) 07:52:40.56 ID:ElV7iNpQ.net]
- 文字列:形式の「ラベル」はバッチファイル内でユニークにしてください。
今回のa:は共通サブルーチンなので、バッチ内で1つで良く、コードの最後に置きましょう。 サブルーチンを使う場合、メインルーチンのラストにはgoto :eof を書くようにしてください。これが無いとメインが終わった後にまたサブルーチン処理が行われます。
- 104 名前:デフォルトの名無しさん mailto:sage [2019/01/24(木) 07:58:36.47 ID:ElV7iNpQ.net]
- またバッチ内で複数のサブルーチンを使いたい場合はそれぞれのサブルーチンの後にexit /bのコマンド行を付けてください。
exit /bによってメインルーチンに処理が戻ります。 これ無いと下の行に処理が遷移してしまいます
- 105 名前:デフォルトの名無しさん mailto:sage [2019/01/24(木) 10:48:11.21 ID:4/xiY5nl.net]
- なるほど、丁寧な説明ありがとうございます。
- 106 名前:デフォルトの名無しさん mailto:sage [2019/01/24(木) 11:16:25.14 ID:tFfJW+eT.net]
- cmdの基礎を勉強しろ
あまりにも質問のレベルが低いとレスがつかないと思え
- 107 名前:デフォルトの名無しさん mailto:sage [2019/02/16(土) 02:44:12.08 ID:Aqg/y48e.net]
- for %%I in (*.txt) do (
echo #%%I ) *.txt だけでなく *.txt2 などもあれば表示する .txt などの拡張子が3文字の時だけ4文字目以降を無視する 拡張子が2文字の時は問題なし バグか仕様か
- 108 名前:デフォルトの名無しさん mailto:sage [2019/02/16(土) 14:24:30.26 ID:dbRt9asv.net]
- dir もね
他にもMS-DOS用の短い名前に反応したり ワイルドカードは、いやらしい動作をするね
- 109 名前:デフォルトの名無しさん mailto:sage [2019/02/16(土) 15:05:34.51 ID:H4+bjsi1.net]
- dir c:\*1
でProgram Filesが表示されるやつか
- 110 名前:デフォルトの名無しさん mailto:sage [2019/02/16(土) 15:23:46.61 ID:dbRt9asv.net]
- del *~*
は危険
- 111 名前:デフォルトの名無しさん mailto:sage [2019/02/16(土) 18:22:32.57 ID:VRMsBAkU.net]
- 8.3形式でもファイル見てるのね
- 112 名前:デフォルトの名無しさん mailto:sage [2019/02/16(土) 21:48:09.10 ID:6/sri1HY.net]
- >>107
dirまでそうでしたか 知らなかったのは私だけで、みんな知ってたのですね DOSの特別実装仕様ということにしておこう
- 113 名前:デフォルトの名無しさん mailto:sage [2019/02/17(日) 08:58:17.36 ID:2q4tHixb.net]
- *.txt2 のファイル名を dir/x で見ると
*~1.TXT とか *~2.TXT になってるから dir *.txt dir *txt dir *xt dir *t で一致するということね
- 114 名前:デフォルトの名無しさん mailto:sage [2019/02/17(日) 10:18:01.03 ID:vf3NvI2M.net]
- やっても良いPCなら OS インストール直後に
>fsutil 8dot3name set で set 1 をして 8.3名作成を無効化するけど >fsutil 8dot3name strip を実際にはしたことがない俺チキン
- 115 名前:デフォルトの名無しさん mailto:sage [2019/02/17(日) 18:32:35.83 ID:2q4tHixb.net]
- これでOK
for %%i in (*.txt) do if /i "%%~xi"==".txt" echo %%i
- 116 名前:デフォルトの名無しさん mailto:sage [2019/02/18(月) 23:00:03.97 ID:xTG5esR6.net]
- 以下のように「C:\hoge」の下の全ファイルのファイル名(拡張子は除く)を
"aaa"に書き換えたいのですが、どのようなコマンドを書けば良いのでしょうか? ■書き換え前 C:\hoge │ あああ.txt │ いいい.xlsx │ ├─hage │ ううう.xml │ えええ.docx │ └─hige おおお.jpeg かかか.gif ■書き換え後 C:\hoge │ aaa.txt │ aaa.xlsx │ ├─hage │ aaa.xml │ aaa.docx │ └─hige aaa.jpeg aaa.gif
- 117 名前:デフォルトの名無しさん mailto:sage [2019/02/18(月) 23:02:17.45 ID:xTG5esR6.net]
- すみません、higeの下のファイル名がずれてしまいました。
正しくは↓です。 ■書き換え前 └─hige おおお.jpeg かかか.gif ■書き換え後 └─hige aaa.jpeg aaa.gif
- 118 名前:デフォルトの名無しさん mailto:sage [2019/02/18(月) 23:05:19.42 ID:xTG5esR6.net]
- それと、同一フォルダ内に同じ拡張子のファイルは複数存在しません。
- 119 名前:デフォルトの名無しさん mailto:sage [2019/02/18(月) 23:08:58.74 ID:rXc7x2eo.net]
- for文とmv組み合わせでしょ
サイト2個検索した方が聞くよりはやくできるとおもうけど なんで質問したの?
- 120 名前:デフォルトの名無しさん mailto:sage [2019/02/19(火) 06:30:48.56 ID:Hb9ZoB2m.net]
- >>115
for /r "c:\hoge" %%i in (*) do ren "%%~fi" "aaa%%~xi"
- 121 名前:デフォルトの名無しさん mailto:sage [2019/02/19(火) 09:50:06.91 ID:Hb9ZoB2m.net]
- 話変わるが
for に /r を付けたら %~nxi の引用符が何故かとれない >for %i in ("abc") do @echo %~nxi abc >for /r %i in ("abc") do @echo %~nxi "abc" >for /r %i in ("abc*") do @echo %~nxi abc
- 122 名前:デフォルトの名無しさん mailto:sage [2019/02/19(火) 10:03:42.75 ID:/Qrw8ZSg.net]
- 管理者として実行したいアプリ、さらに優先度を低で起動させる方法ありますか?
さらにそれをスタートアップに登録したいんです
- 123 名前:デフォルトの名無しさん mailto:sage [2019/02/19(火) 10:09:52.10 ID:e0NdV1CM.net]
- タスクに登録すれば?
- 124 名前:デフォルトの名無しさん mailto:sage [2019/02/19(火) 10:57:12.10 ID:Hb9ZoB2m.net]
- start /LOW のコマンドのショートカットを
スタートアップのフォルダに入れりゃいいんじゃね ショートカットの設定は管理者にして
- 125 名前:117 mailto:sage [2019/02/19(火) 20:46:10.94 ID:kZ82VOHH.net]
- >>118
ネットで探したのですが、バッチファイルをやり始めて日が浅いので使うコマンドの見当も付きませんでした。 今日職場で必要だったので聞いてしまいました。 >>119 助かりました。 どうもありがとうございます。
- 126 名前:デフォルトの名無しさん mailto:sage [2019/02/20(水) 00:04:58.50 ID:GzdyKGwx.net]
- 聞いたほうが早いならそれでもいいと思うよ。
- 127 名前:デフォルトの名無しさん mailto:sage [2019/02/20(水) 08:00:48.35 ID:vs0GH/UB.net]
- AzureAD、Office365を使うなら(Office365についてはGraphの使いこなしも必須)。バッチやVBSの代替としても必須。
「Powershellが出来る」だけではなくPowershellも活用し、なんの業務をしてたか?がスキルとなる基本的にはインフラ屋のスキルの一要素
- 128 名前:デフォルトの名無しさん mailto:sage [2019/02/20(水) 08:01:45.93 ID:vs0GH/UB.net]
- すみません
>>126は誤爆
- 129 名前:デフォルトの名無しさん mailto:sage [2019/02/21(木) 18:42:23.51 ID:WAQ7+H44.net]
- 環境変数の中に=があると
変数参照が変な事になってくるな... >set a=b=c >echo %a% b=c >echo %a=b% c
- 130 名前:デフォルトの名無しさん [2019/02/21(木) 19:45:58.39 ID:bhin4IwL.net]
- イコールは^つけないと特殊な動作するはず
- 131 名前:デフォルトの名無しさん mailto:sage [2019/02/21(木) 20:25:05.21 ID:WAQ7+H44.net]
- 俺も最初はそう思ったんだけど...
>set a=b^=c >echo %a=b% c
- 132 名前:デフォルトの名無しさん mailto:sage [2019/02/21(木) 21:37:53.86 ID:m0MzDbdd.net]
- ならないんだけど?(win7)
BATだと ECHO は <ON> です。 ダイレクトだと %a=b%
- 133 名前:デフォルトの名無しさん mailto:sage [2019/02/21(木) 21:41:55.31 ID:oU3vU03f.net]
- 自分の環境でもならない
win10
- 134 名前:デフォルトの名無しさん mailto:sage [2019/02/21(木) 22:19:20.44 ID:WAQ7+H44.net]
- バッチでやって見た
set a=b^=c echo %a% echo %a=b% 結果 b=c c set "a=b=c" でも同じ Microsoft Windows 10 Pro 10.0.17763 N/A ビルド 17763 >set a a=b=c ALLUSERSPROFILE=C:\ProgramData APPDATA=C:\Users\ore\AppData\Roaming
- 135 名前:デフォルトの名無しさん mailto:sage [2019/02/21(木) 23:16:08.70 ID:WAQ7+H44.net]
- >>133
たった今、品質更新プログラムのインストールしました。 KB4487044 (OS ビルド 17763.316) なんと正常になったようです 結果 b=c ECHO は <OFF> です。
- 136 名前:デフォルトの名無しさん mailto:sage [2019/03/01(金) 16:41:47.85 ID:7J1MA7z+.net]
- 1.batファイルで
start ***.bat を実行してその***.batの中に call ***.exe があるんだけど 最初に実行するbatファイルでどうにか ***.exeを最小化で起動できますか?
- 137 名前:デフォルトの名無しさん mailto:sage [2019/03/01(金) 16:56:22.92 ID:1DJZnnpK.net]
- start "" /min "hoge.exe"
- 138 名前:デフォルトの名無しさん mailto:sage [2019/03/12(火) 10:13:24.40 ID:2ZxzO4Nc.net]
- forで行取得して並列で処理してるんですが、一度にすべて実行するのでPCの負担が大きいです。
さらに回数指定するには、どうすればできますか?
- 139 名前:137 [2019/03/12(火) 11:09:28.51 ID:2ZxzO4Nc.net]
- すみません。説明不足でした。
初めにforでテキストを取得しsetに割り当て、全てをコマンドとして生成して並列処理しています。 並列で3回ずつ実行し終了をループ
- 140 名前:したいです。 []
- [ここ壊れてます]
- 141 名前:デフォルトの名無しさん mailto:sage [2019/03/12(火) 13:04:35.48 ID:6sZCRvoD.net]
- batを見ないと良く分からん
- 142 名前:デフォルトの名無しさん mailto:sage [2019/03/12(火) 14:22:43.31 ID:JT0qCUVC.net]
- FORでサブルーチンをCALLするようにして、
3回呼び出されたら実行するようにするとかかな これ以上は元のバッチを見ないと何とも
- 143 名前:デフォルトの名無しさん mailto:sage [2019/03/12(火) 14:35:25.41 ID:ollYoz5v.net]
- 並列処理ということは、非同期呼び出しを使ってるわけだから
その呼び出した処理の終了をどうやって感知するかが肝 多分プロセスの存在チェックでいけると思うがそういうのが過去ログにあったと思う
- 144 名前:デフォルトの名無しさん [2019/03/12(火) 20:57:10.17 ID:kFHhQjU8.net]
- んでもそんな高度な事がしたいならVCあたりで作っちゃいかんの?
- 145 名前:デフォルトの名無しさん mailto:sage [2019/03/14(木) 00:11:57.06 ID:MfJOghkN.net]
- -- A.bat --
:loop if "%~1" == "" goto end call B.bat "%~1" shift goto loop :end -- B.bat -- -- if exist "%~dpn1_hoge.txt" ( set XXX=--option "%~dpn1_hoge.txt" ) -- A.batに複数ファイルをD&DしたときにB.batのif existで指定したファイルがA.batに入力したファイルに1つでも存在すれば他の入力ファイルにも同じ処理が実行されてしまいます これを回避するにはどうすればいいでしょうか?
- 146 名前:デフォルトの名無しさん mailto:sage [2019/03/14(木) 00:20:05.87 ID:Gms0hgp4.net]
- 毎回リセットしとけば?
b.batの先頭でset xxx=を書くとかb.batをsetlocal〜endlocalするとか
- 147 名前:デフォルトの名無しさん mailto:sage [2019/03/14(木) 00:26:03.45 ID:Gms0hgp4.net]
- すまん良く読んでなかった
ファイルね b.batで生成するのかな? 削除しちゃっても問題ないのならa.batの先頭でdelしちゃえば?
- 148 名前:デフォルトの名無しさん mailto:sage [2019/03/14(木) 00:37:26.49 ID:MfJOghkN.net]
- B.batは動画のエンコードに使っているバッチファイルの中身の一部で %~dpn1_hoge.txt があった場合はツールに追加のオプションを指定するようにしている感じです
- 149 名前:デフォルトの名無しさん [2019/03/19(火) 11:54:10.54 ID:hD2ftWP/.net]
- set day=3/19(火)
if 1==1 ( echo %day% ) すみませんどなたか教えてください。 曜日の半角括弧のせいでif文が閉じられてしまうんだけど どうやってエスケープすればいいんでしょうか?
- 150 名前:デフォルトの名無しさん mailto:sage [2019/03/19(火) 12:02:29.16 ID:9bBZVsPM.net]
- ^)
バッチ エスケープで検索すりゃすぐわかるだろ
- 151 名前:デフォルトの名無しさん mailto:sage [2019/03/19(火) 12:50:21.44 ID:Juttg7oZ.net]
- 括弧はpsのワンライナーでも嵌まる箇所
- 152 名前:デフォルトの名無しさん mailto:sage [2019/03/19(火) 12:57:54.34 ID:dDtGuicR.net]
- >>147
こういう方法もある 変数dayの中に、二重引用符がなければ set day=3/19(火) if 1==1 ( for /f delims^=^ eol^= %%i in ("%day%") do echo %%i ) これだとdayに & | > < ^ ( ) 等やばそうな文字が入っても大丈夫
- 153 名前:デフォルトの名無しさん mailto:sage [2019/03/19(火) 13:01:36.48 ID:dDtGuicR.net]
- echo.%%i
にしたらもっといいかも
- 154 名前:147 mailto:sage [2019/03/19(火) 13:11:02.99 ID:hD2ftWP/.net]
- set day=3/19(火)
if 1==1 ( echo %day:~0,6%^)% ) これでいけました。 >>150のも今後の参考にさせてもらいます。ありがとうございました
- 155 名前:デフォルトの名無しさん mailto:sage [2019/03/19(火) 13:19:49.65 ID:dDtGuicR.net]
- 最後の % は要らんぞ
- 156 名前:デフォルトの名無しさん mailto:sage [2019/03/19(火) 20:28:12.65 ID:xvBmkr0d.net]
- >>147
echo出力だけなら環境変数を ""でくくった上で遅延展開する方法もある。 これだとほとんどすべての記号がそのまま出力される。例外として「!」は「^!」で、「%」は「%%」で、「^」「^^」などは要エスケープ。 setlocal ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION set "day=3/19(火)" if 1==1 ( echo !day! )
- 157 名前:デフォルトの名無しさん mailto:sage [2019/03/19(火) 22:00:01.63 ID:dDtGuicR.net]
- ! とか ^ があると
setlocalの前に変数代入した方が楽だな
- 158 名前:デフォルトの名無しさん mailto:sage [2019/03/20(水) 22:34:42.36 ID:/eguYGP5.net]
- 一番厄介なのって [ ] だっけ?
- 159 名前:デフォルトの名無しさん mailto:sage [2019/03/21(木) 01:32:50.66 ID:3Vd/nBOR.net]
- 個人的には全角
- 160 名前:スペースと() []
- [ここ壊れてます]
- 161 名前:デフォルトの名無しさん mailto:sage [2019/03/21(木) 21:56:31.90 ID:HPyHK69o.net]
- day=off だと echo されない
- 162 名前:デフォルトの名無しさん mailto:sage [2019/03/21(木) 23:03:18.28 ID:HPyHK69o.net]
- 遅延モードでのエスケープの動作が面白い
setlocal enabledelayedexpansion set "a=^x ^^ ^!" set "b=^x ^^ ^y" set "c=^x ^^ ^y" ! echo a=!a! echo b=!b! echo c=!c! a=x ^ ! b=^x ^^ ^y c=x ^ y
- 163 名前:デフォルトの名無しさん mailto:sage [2019/04/10(水) 22:17:03.83 ID:dRPi9Fbo.net]
- コマンドプロンプトで以下のpowershellコマンドを実行すると曜日が英語で表示されるのですが、
ここで表示された"Wednesday"を呼び出し元であるコマンドプロンプト側の変数に取得するのは難しいでしょうか? 曜日の判定に使いたいのです。 C:\>powershell "(get-date).DayOfWeek" Wednesday
- 164 名前:デフォルトの名無しさん mailto:sage [2019/04/10(水) 22:22:48.75 ID:kh6Z72O0.net]
- >>160
for /f "delims=" %%i in ('powershell "(get-date).DayOfWeek"') do set "hoge=%%i"
- 165 名前:デフォルトの名無しさん mailto:sage [2019/04/10(水) 23:46:13.28 ID:dRPi9Fbo.net]
- >>161
ありがとうございます!それでバッチリでした。 ってかレスはやっ!( ̄□ ̄;)
- 166 名前:デフォルトの名無しさん mailto:sage [2019/04/17(水) 14:41:43.82 ID:SVkPhkuc.net]
- 読み取り専用属性付加と解除についてお願いします
ATTRIB +R hoge.txt この場合hoge.txtをバッチファイルにドロップしたときhoge.txtの属性が読み取り専用になりますが ATTRIB +R *.txt とすると一つのファイルをドロップしただけでディレクトリ内の全てのテキストファイルの属性が変わってしまいます バッチファイルへドロップしたファイルのみ属性を変えたいのですがこういうことは可能でしょうか?
- 167 名前:デフォルトの名無しさん mailto:sage [2019/04/17(水) 15:11:44.94 ID:SVkPhkuc.net]
- >>163です
バッチファイルにファイル名を指定してしまうと同一名のファイルしか処理できませんが ファイル名が異なっていてもドロップしたファイルのみ属性変更したいのです
- 168 名前:デフォルトの名無しさん mailto:sage [2019/04/17(水) 15:30:16.10 ID:Tk94P2Iw.net]
- >>163
"*.txt "が邪魔
- 169 名前:デフォルトの名無しさん mailto:sage [2019/04/17(水) 15:59:23.64 ID:SVkPhkuc.net]
- >>165
ATTRIB +R これだけでいいのでしょうか 試してみましたが一つのファイルをバッチファイルへドロップすると ディレクトリ内の全てのファイルが属性変更されてしまいます
- 170 名前:デフォルトの名無しさん mailto:sage [2019/04/17(水) 16:34:46.90 ID:HAjihGMm.net]
- >>166
ATTRIB +R %1 引数のファイルだけ属性を変える 引数が無い場合は全てのファイルになるので ガードは付けた方が良いと思う
|

|