[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 08/13 02:16 / Filesize : 294 KB / Number-of Response : 1050
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



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/

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

引数のファイルだけ属性を変える
引数が無い場合は全てのファイルになるので
ガードは付けた方が良いと思う



171 名前:デフォルトの名無しさん mailto:sage [2019/04/17(水) 17:06:43.84 ID:SVkPhkuc.net]
>>167
%1 とすることでドロップした一つのファイルが読み取り属性変更できるようになりました
二つとか三つとか複数ファイルはできないのですよね
皆さんありがとうございました

172 名前:デフォルトの名無しさん mailto:sage [2019/04/17(水) 17:54:55.66 ID:DeBFB2/b.net]
ATTRIB +R %*
とすると複数ファイル可

173 名前:デフォルトの名無しさん [2019/04/17(水) 18:03:53.01 ID:mAjziF7r.net]
バッチファイルの図形プログラミング作ったら広告収入入ると思いますか?

174 名前:デフォルトの名無しさん mailto:sage [2019/04/17(水) 18:18:21.55 ID:QABBLuNd.net]
俺のところじゃ>>169はエラーになる
for %%i in (%*) do attrib +r %%i
まあファイル名によってはこれもダメだけど

175 名前:デフォルトの名無しさん mailto:sage [2019/04/17(水) 19:24:10.99 ID:SVkPhkuc.net]
>>169
>>171
みなさんありがとうございます
助かりました

176 名前:デフォルトの名無しさん mailto:sage [2019/04/17(水) 21:07:05.52 ID:3cAVwUGz.net]
複数ファイルドロップするなら shift でループが簡単だと思うけど何か落とし穴ある?

177 名前:デフォルトの名無しさん mailto:sage [2019/04/18(木) 19:59:48.99 ID:pUSpmyse.net]
ファイルドロップで落とし穴があるとしたら >>45 みたいな引数の時
>>48 を参考にすると

@echo off
set "a=%cmdcmdline:"=*%"
set "a=%a:~0,-1%" & set "e="
set "c=" & for /f "tokens=2* delims=*" %%i in ("%a%") do set "c=%%j"
:x
set "a=" & for /f "tokens=*" %%i in ("%c%") do set "a=%%i"
if "%a:~0,1%"=="*" (set "d=*") else set "d= "
set "b=" & set "c="
for /f "tokens=1* delims=%d%" %%i in ("%a%") do set "b=%%i" & set "c=%%j"
if defined b set e=%e% "%b%" & goto x
for %%i in (%e%) do attrib +r %%i

でもこれファイルドロップでしか使えない

178 名前:デフォルトの名無しさん [2019/04/19(金) 16:41:41.89 ID:nzBF9sby.net]
batのコマンドのタイトルバーに
「管理者: 」
の表示を消すこと出来ないのでしょうか?

179 名前:デフォルトの名無しさん mailto:sage [2019/04/19(金) 17:41:11.03 ID:HG96JCXu.net]
muiファイルいじるしかなかったような

180 名前:デフォルトの名無しさん mailto:sage [2019/04/19(金) 18:58:50.77 ID:FmrBk+Vp.net]
スレチと怒られそうだが

--- change_wnd_title.uws ------
DEF_DLL SetWindowTextA(HWND, STRING):BOOL:user32.DLL
DIM old_title = PARAM_STR[0]
DIM new_title = PARAM_STR[1]
DIM idwnd = GETID(old_title)
IFB -1<idwnd THEN
SetWindowTextA(IDTOHND(idwnd), new_title)
ENDIF
---------

C:\UWSC\UWSC.exe C:\TEST\change_wnd_title.uws "管理者: test" "ABC"
を管理者権限で実行
「管理者:」 と「test」 の間にスペースが2つある点に注意

べつにWin32apiが使えればほかのスクリプトでもいいが
すでに配布が終了している(?)UWSCをすすめるのは
とてもにコンパクトで気軽に試しやすいため
以下のレスにあるDL先は公式リンク
使うのはFree版でよい
egg.2ch.net/test/read.cgi/software/1533818531/3



181 名前:デフォルトの名無しさん mailto:sage [2019/04/19(金) 21:14:57.50 ID:5yrPogsy.net]
>>175
例えば d:\hoge\a.bat を実行するなら

ショートカットの新規作成でコマンドは
cmd /c start "ABC" /d "d:\hoge" a.bat
ショートカットのプロパティで
実行時の大きさは「最小化」
詳細設定で「管理者として実行」

このショートカットを実行すると
a.bat が管理者として実行されて
タイトルは ABC のみになる

182 名前:デフォルトの名無しさん mailto:sage [2019/04/19(金) 21:49:09.78 ID:5yrPogsy.net]
>>178
念のため書いておくが
バッチの中で
title xxx
と書くと「管理者:xxx」
となるので台無し
バッチの title コマンドは消せ
それが出来ないなら俺は知らん






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<294KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef