[過去ログ] 【.cmd】 バッチファイルスクリプト %12 【.bat】©2ch.net (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
1
(2): 転載ダメ©2ch.net [sageteoff] 2017/03/11(土)13:47 ID:2LSSeyH1(1)調 AAS
拡張子が .cmd または .bat のバッチファイルのスクリプティング(プログラミング)に関わる
質問,テクニック(JScript,Perl等の埋め込みなど含む),関連情報のためのスレです。

※何でも無理矢理バッチでやろうとせず、WSH等の使用も検討しましょう。
前スレ
【.cmd】 バッチファイルスクリプト %11 【.bat】©2ch.net
2chスレ:tech

それ以前の過去スレ
%10 2chスレ:tech
%9  2chスレ:tech
%8  2chスレ:tech
%7  2chスレ:tech
%6  2chスレ:tech
%5  2chスレ:tech
%4  2chスレ:tech
%3  2chスレ:tech
%2  2chスレ:tech
%1  2chスレ:tech
2
(1): 2017/03/11(土)14:16 ID:tWxSSf/m(1)調 AAS
2GET
3: 2017/03/11(土)17:24 ID:aIgw+L4R(1)調 AAS
そろそろ次スレ立てた方がいいと思う
4
(1): 2017/03/11(土)19:08 ID:ayh8mOJp(1)調 AAS
タヒ
5
(1): 2017/03/12(日)22:04 ID:LKmH3irJ(1)調 AAS
達人の方々!お教えください
set文による文字列の置き換えで
=を置き換えたいのですが
どのように記述すればよいのでしょうか?
6
(1): 2017/03/13(月)02:51 ID:ieWeiZc+(1/2)調 AAS
>>5
setの文字列置換では無理
=の個数が決まっているのならforでderims==
不特定なら一文字ずつ=かどうかを判定し=なら置換したい文字列を付け足し
テストしてないから不備があるかもだけど以下みたいな感じで出来ると思う

:ReplaceEqual
if "%~1"=="" (echo ERROR&exit /b)
set "str=%~1"
set output=
:CheckEqual
if not defined str exit /b
pause
if "%str:~0,1%"=="=" (
set "output=%output%置換後文字列"
set "str=%str:~1%"
goto :CheckEqual
)
set "output=%output%%str:~0,1%"
set "str=%str:~1%"
goto :CheckEqual
7
(1): 2017/03/13(月)02:56 ID:ieWeiZc+(2/2)調 AAS
済まん pause テストするつもりで入れてたのを消すの忘れてた
まあそのままテストしてみて
8
(2): 2017/03/13(月)03:26 ID:Kv5ZfyaF(1)調 AAS
:ReplaceEqual
set "str=%~1"
set output=
:CheckEqual
if "%str:~0,1%"=="=" (
set "output=%output%置換後文字列"
set "str=%str:~1%"
) else (
set "output=%output%%str:~0,1%"
set "str=%str:~1%"
)
if defined str goto :CheckEqual
exit /b
9: 2017/03/13(月)07:40 ID:KSFKLeET(1)調 AAS
>>6-8
ありがとうございます
色々試して見ます
10
(1): 2017/03/13(月)22:53 ID:UotY540z(1)調 AAS
>>8と同じだけど、もう少し使いやすいI/Fにしたもの
@echo off
rem 文字列中には、",%(1つのみ) を入れないこと
set "var==abc=def=!#$&'()=^~|-+*;:{}<./?\_%%"
call :replace var "=" "="
echo "%var%"

rem savety stopper
goto :eof
:replace
setlocal
set i=0
set s=
:replace_loop
call set "c=%%%1:~%i%,1%%"
if not defined c (endlocal&set "%1=%s%"&goto :eof)
if "%c%" equ "%~2" (set "s=%s%%~3") else (set "s=%s%%c%")
set /a i+=1
goto :replace_loop
11: 2017/03/15(水)08:22 ID:Ekd3hMdD(1)調 AAS
cmderいいな
この手のツールで表示が崩れたりせずまともに動くやつ見るの初めてだ
12
(2): 2017/03/15(水)19:39 ID:sbz59NLr(1)調 AAS
for /r %%i in (*.jpg) のようなコマンドで取得した絶対パスをカレントフォルダとの相対パスに変換するにはどうするのが一番ですか?
現在はsetコマンドの置換機能でカレントフォルダの部分のパスを消しているんですがパスに変な文字列が入っていると誤作動を起こしそうで少し不安です。
もっとスマートなやり方はありますか?
13
(1): 2017/03/16(木)01:00 ID:DixFGYK0(1)調 AAS
>パスに変な文字列が入っていると
どのみち%が入っているとバッチだと詰む。やれなくないけど物凄く面倒
バッチでは完全な文字列操作は無理だと割り切った方がいい
PowerShell使えば?
https://www.google.co.jp/search?&q=powershell+%E7%9B%B8%E5%AF%BE%E3%83%91%E3%82%B9+%E5%A4%89%E6%8F%9B
14
(1): 2017/03/16(木)01:47 ID:9KCSEqzj(1/2)調 AAS
>>13
分かりました、何か別の方法を考えます
15
(1): 2017/03/16(木)02:25 ID:iKA3O6Cf(1/4)調 AAS
>>14
実際の有効なパスが対象なんだから
問題となるのは上に出てきたequalを含んだフォルダがある場合だけだろう
setlocal
echo %cd%>tmpfile
for %%i in (tmpfile) do set /a size=%%~zi-2
del tmpfile
if %size% neq 3 set /a size+=1
for /r %%i in (*.txt) do (
set "p=%%~i"
call set "p=%%p:~%size%%%"
call echo ".\%%p%%"
)
endlocal
16: 2017/03/16(木)02:32 ID:iKA3O6Cf(2/4)調 AAS
肝心なのは、文字列操作、表示まで扱う場合は
文字列を必ず""で括るようにすること
& % ^ 等を含んでると括ってないとおかしくなる
17
(1): 2017/03/16(木)04:08 ID:gadu0oc0(1)調 AAS
chcp 437
18: 2017/03/16(木)11:46 ID:iKA3O6Cf(3/4)調 AAS
>>17
ファイルサイズじゃ根本的にダメだったね
(それにecho %cd%も""で括ってなきゃいけなかったし)
call :length "%cd%" n
for /r %%i in (*.txt) do (
set "p=%%~i"
call set "p=%%p:~%n%%%"
call echo ".\%%p%%"
)

goto :eof
:length
setlocal
set s=%1
set n=0
:length_1
call set "c=%%s:~%n%,1%%"
if defined c set /a n+=1&goto :length_1
if %n% neq 5 set /a n+=1
endlocal&set /a %2=%n%-2
goto :eof
19: 2017/03/16(木)12:49 ID:iKA3O6Cf(4/4)調 AAS
訂正
call :length cd n
for /r %%i in (*.txt) do (
set "p=%%~i"
call set "p=%%p:~%n%%%"
call echo "%%p%%"
)

goto :eof
:length
setlocal
set n=0
:length_1
call set "c=%%%1:~%n%,1%%"
if defined c set /a n+=1&goto :length_1
if %n% neq 3 set /a n+=1
endlocal&set /a %2=%n%
goto :eof
20
(1): 12 2017/03/16(木)18:53 ID:9KCSEqzj(2/2)調 AAS
>>15
ありがとうございます
文字列を置換することばかり考えていたのでカレントフォルダ分の文字数を削るという発想に行き着きませんでした
これで何とかなりそうな気がします
21
(1): 2017/03/17(金)21:12 ID:V4hZYsin(1)調 AAS
どなたかお詳しい方、ご教示ください
windows7を起動後、自動で特定のアカウントパスワード入力後にログインし、
ログイン後、デスクトップの特定座標を自動でクリックするという操作を行わせたいです
このような処理はbatファイルで可能でしょうか?
win7初期状態にインストールされているものであれば他のものを使用してもよいのですが。
キーワードだけでも結構ですので、お助けいただければ幸いです
22: 2017/03/17(金)21:46 ID:93Jxn9OB(1)調 AAS
胡散臭すぎるだろ・・・
23: 2017/03/17(金)22:18 ID:Pk7DeofX(1)調 AAS
ログインとはWindows7の登録ユーザーってことか?
それともWebブラウザを起動してどっかのサイトにログインするってことか?
あと何故マウスクリックなのか?
デスクトップに表示してるアイコンなら別に直接起動できるだろうに
24: 2017/03/18(土)09:01 ID:KPOks79l(1)調 AAS
>>21
無理です
25: 2017/03/18(土)15:14 ID:cDGLzqpd(1)調 AAS
start https://www.google.co.jp/search?q=windows7+自動ログイン
26: 2017/03/20(月)17:14 ID:QMGJB+5Y(1)調 AAS
だいぶ使い道ないけど、DIRって複数フォルダの内容を1回で表示できるんだね。

 DIR C:\tmp C:\tmp2
27: 2017/03/24(金)13:17 ID:jo55dHfH(1)調 AAS
for文が同一フォルダに自分で出力したファイルを
一つだけ拾っちゃうんだけど、何か対策はありませんか?

for %%I in (*.jpg) do copy %%I %%~dpI_%%~nxI
って感じに処理すると
1.jpg 2.jpg → _1.jpg _2.jpg __1.jpg
となっちゃう…
28: 2017/03/24(金)13:52 ID:OsTTofqK(1)調 AAS
for /f "delims=" %%a in ('dir /a-d /b *.jpg') do
29: 2017/03/25(土)20:50 ID:8s6m96Ov(1)調 AAS
なるほどDIRか…
ありがとうございました。
30
(1): 2017/03/28(火)18:35 ID:oEoZ8De2(1)調 AAS
バッチファイルで

echo %*

とすると引数がすべて表示されるけど

%0=自分自身だけ無いのはなんで?
*で0だけハブられるなんて可哀想……
31
(3): 2017/03/28(火)18:52 ID:IKXgMhqU(1)調 AAS
少し考えれば分かりそうなものだが
%cmdcmdline%
32: 2017/03/30(木)01:42 ID:gGp/SYAm(1)調 AAS
なんか真似しそう(笑)
33
(4): 2017/04/03(月)06:06 ID:awE7Wvau(1)調 AAS
バッチ書くのにオススメのエディタあったら教えて
最近目がめっきり弱くなって来たので色分け表示とかの視認性上がるものや
便利そうな機能があるものを知りたい
頻繁に使うわけじゃないからこそ探すの面倒で先人の知識をお借りしたい
34: 2017/04/03(月)07:06 ID:pL1jzkCs(1)調 AAS
>>33
VisualBatは?
文字に色もつくしいろいろ設定できるよ
batをexe形式にすることもできる
35: 2017/04/03(月)07:12 ID:5ummjK72(1)調 AAS
サクラエディタ
36: 2017/04/03(月)07:33 ID:uEU30p4H(1)調 AAS
マジレスすると目が悪いならでかいモニタ買ってフォントサイズでかくするのが一番良い

PowerShell、Ruby, PythonとかならVSCodeでブレークポイント張ったり変数のインスペクトしたりできるけど
その手の支援機能が全く期待できないBatじゃどれ使っても同じだろう
手に馴染んだエディタ使えばいいしないならフリーのどれか一つ覚えればいい
キーワードの色分け程度なら大抵用意されてるし

VisualBatはちょくちょく見かけるけどそれ専用の環境を覚えるくらなら普通のエディタ使ったほうがいい気がする
個人的にはBatから別の言語のコード書いて呼び出す事が多いし

自作マクロになるけど
↓みたいなコードを一つのファイルに書いて##!!に挟まれたカーソル位置のコードを切り出して実行する機能が
言語の学習やちょっとしたテストに便利で気に入っているのでエディタマクロ覚えて作ってみるのお勧め

##!! echo test
echo hello

##!! for test
for %i in (a,b,c) do echo %i

##!! calc test
set a=1
set /a a+=2
echo %a%
37: 2017/04/03(月)07:56 ID:wDpIbVKg(1)調 AAS
中身のない長文要らんわ
38: 2017/04/03(月)22:35 ID:TkzGFBjq(1/3)調 AAS
>>33
黒背景に白地の文字が視認性あがるよ
フォントはゴシックで文字サイズも大きくする
俺の使ってるのは一般的にはオススメではないのでどうかと思うが
(New)QXエディタ(一応シェアウェアだが未登録でも機能制限も期間制限も無い)
39
(1): 2017/04/03(月)22:53 ID:jFb9lqNm(1)調 AAS
真っ黒背景に真っ白文字は目がズキズキする
40
(1): 2017/04/03(月)22:58 ID:TkzGFBjq(2/3)調 AAS
>>39
確かに、目のいい人にとってはそうかもしれないけどね
コマンドプロンプト画面がエディタ画面だと思ってもらえれば想像できるよね
41: 2017/04/03(月)23:14 ID:rmwiW03F(1)調 AAS
color 0f
は目に痛い
42: 2017/04/03(月)23:18 ID:TkzGFBjq(3/3)調 AAS
目のいい人がコメントしたって意味ないだろ
老眼やかすみ目で文字が読みにくくなったらわかるよ
特に、カンマとピリオドの区別が付かないとストレス溜まるぜ
43
(1): 2017/04/03(月)23:37 ID:mc8PKhXW(1)調 AAS
>>33
サクラエディタ入れて
IPAゴシックフォントにする
44: 2017/04/04(火)00:06 ID:m/ZONOLH(1)調 AAS
背景は薄い黄緑色にしてる
目が疲れない
45
(1): 2017/04/04(火)00:16 ID:Q0uaZ4Jg(1)調 AAS
そういえば昔のホスト端末とかって黒背景に緑字が多かったよね?
あれってなんでだろ?
46: 2017/04/04(火)02:35 ID:G7XsiAet(1)調 AAS
>>45
グリーンディスプレイがあったからじゃね?
47: 2017/04/04(火)02:45 ID:ti2ez7YV(1)調 AAS
緑やオレンジの蛍光体の方がTVの白蛍光体より刺激が少ないから採用されていたらしい
48
(1): 2017/04/04(火)04:37 ID:RiJvnB3V(1)調 AAS
>>40
適当な画像エディタのスポイトで抽出してみればわかるけど
コマンドプロンプトは黒と白じゃなくて黒とグレー
理由は目への配慮

DQも同じ
49: 33 2017/04/04(火)05:42 ID:ldgn2Vfw(1)調 AAS
皆様たくさんのレスありがとうございます

VisualBat試してみました
デバッガとしては便利そうですがTab文字打てないのでエディタとしてはまだちょっと使えなさそうです
for や if の()で自動インデントとかしてくれるようになると便利かも
今後の更新に期待します

他、挙げて頂いたアドバイスも順次時間が取れ次第試して行きたいと思っております
次はサクラエディタを試用する予定。他候補にMery、QX
コマンドプロンプトは color 07 不透明度80 で使っております
かすみ目、乱視、老眼、ド近眼、何れも酷いです
他に思い付いたアドバイス等ございましたらよろしくお願いします
50
(2): 2017/04/04(火)06:03 ID:o7weIbXl(1)調 AAS
>>43
フォントはVLゴシックのほうがいいと思う
51: 2017/04/04(火)12:05 ID:h1EI1nbQ(1)調 AAS
gPadは色弄りやすい
52: 2017/04/04(火)12:56 ID:CQgziqhI(1)調 AAS
>>50
あのフォントゼロに斜線が入ってるから使ってる
1-
あと 950 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.023s