TOP カテ一覧 スレ一覧 100〜終まで 2ch元 削除依頼
Access VBA 質問スレ Part2
【消しゴム】MONOを使ってみるスレ4【じゃない】
Google App Engine for java
【マウスだけで】Scratch【プログラミング】その1
「コンパイラ・スクリプトエンジン」相談室16
Visual Studio 2019 Part2
クラスとかインスタンスってなんのためにあんの?
ExcelVBAで勤務表を作ろう
プログラミングのお題スレ Part17
Vue vs React vs Angular Part.2

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


1 :2017/03/11 〜 最終レス :2018/09/11
拡張子が .cmd または .bat のバッチファイルのスクリプティング(プログラミング)に関わる
質問,テクニック(JScript,Perl等の埋め込みなど含む),関連情報のためのスレです。

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

それ以前の過去スレ
%10 http://peace.2ch.sc/test/read.cgi/tech/1374205515/
%9  http://toro.2ch.sc/test/read.cgi/tech/1335015478/
%8  http://toro.2ch.sc/test/read.cgi/tech/1315844420/
%7  http://hibari.2ch.sc/test/read.cgi/tech/1298873550/
%6  http://hibari.2ch.sc/test/read.cgi/tech/1277465356/
%5  http://pc12.2ch.sc/test/read.cgi/tech/1242268171/
%4  http://pc12.2ch.sc/test/read.cgi/tech/1229955189/
%3  http://pc11.2ch.sc/test/read.cgi/tech/1217860043/
%2  http://pc12.2ch.sc/test/read.cgi/tech/1197881068/
%1  http://pc11.2ch.sc/test/read.cgi/tech/1178281991/

2 :
2GET

3 :
そろそろ次スレ立てた方がいいと思う

4 :
タヒ

5 :
達人の方々!お教えください
set文による文字列の置き換えで
=を置き換えたいのですが
どのように記述すればよいのでしょうか?

6 :
>>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 :
済まん pause テストするつもりで入れてたのを消すの忘れてた
まあそのままテストしてみて

8 :
: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 :
>>6-8
ありがとうございます
色々試して見ます

10 :
>>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 :
cmderいいな
この手のツールで表示が崩れたりせずまともに動くやつ見るの初めてだ

12 :
for /r %%i in (*.jpg) のようなコマンドで取得した絶対パスをカレントフォルダとの相対パスに変換するにはどうするのが一番ですか?
現在はsetコマンドの置換機能でカレントフォルダの部分のパスを消しているんですがパスに変な文字列が入っていると誤作動を起こしそうで少し不安です。
もっとスマートなやり方はありますか?

13 :
>パスに変な文字列が入っていると
どのみち%が入っているとバッチだと詰む。やれなくないけど物凄く面倒
バッチでは完全な文字列操作は無理だと割り切った方がいい
PowerShell使えば?
ttps://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 :
>>13
分かりました、何か別の方法を考えます

15 :
>>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 :
肝心なのは、文字列操作、表示まで扱う場合は
文字列を必ず""で括るようにすること
& % ^ 等を含んでると括ってないとおかしくなる

17 :
chcp 437

18 :
>>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 :
訂正
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 :
>>15
ありがとうございます
文字列を置換することばかり考えていたのでカレントフォルダ分の文字数を削るという発想に行き着きませんでした
これで何とかなりそうな気がします

21 :
どなたかお詳しい方、ご教示ください
windows7を起動後、自動で特定のアカウントパスワード入力後にログインし、
ログイン後、デスクトップの特定座標を自動でクリックするという操作を行わせたいです
このような処理はbatファイルで可能でしょうか?
win7初期状態にインストールされているものであれば他のものを使用してもよいのですが。
キーワードだけでも結構ですので、お助けいただければ幸いです

22 :
胡散臭すぎるだろ・・・

23 :
ログインとはWindows7の登録ユーザーってことか?
それともWebブラウザを起動してどっかのサイトにログインするってことか?
あと何故マウスクリックなのか?
デスクトップに表示してるアイコンなら別に直接起動できるだろうに

24 :
>>21
無理です

25 :
start https://www.google.co.jp/search?q=windows7+自動ログイン

26 :
だいぶ使い道ないけど、DIRって複数フォルダの内容を1回で表示できるんだね。

 DIR C:\tmp C:\tmp2

27 :
for文が同一フォルダに自分で出力したファイルを
一つだけ拾っちゃうんだけど、何か対策はありませんか?

for %%I in (*.jpg) do copy %%I %%~dpI_%%~nxI
って感じに処理すると
1.jpg 2.jpg → _1.jpg _2.jpg __1.jpg
となっちゃう…

28 :
for /f "delims=" %%a in ('dir /a-d /b *.jpg') do

29 :
なるほどDIRか…
ありがとうございました。

30 :
バッチファイルで

echo %*

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

%0=自分自身だけ無いのはなんで?
*で0だけハブられるなんて可哀想……

31 :
少し考えれば分かりそうなものだが
%cmdcmdline%

32 :
なんか真似しそう(笑)

33 :
バッチ書くのにオススメのエディタあったら教えて
最近目がめっきり弱くなって来たので色分け表示とかの視認性上がるものや
便利そうな機能があるものを知りたい
頻繁に使うわけじゃないからこそ探すの面倒で先人の知識をお借りしたい

34 :
>>33
VisualBatは?
文字に色もつくしいろいろ設定できるよ
batをexe形式にすることもできる

35 :
サクラエディタ

36 :
マジレスすると目が悪いならでかいモニタ買ってフォントサイズでかくするのが一番良い

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 :
中身のない長文要らんわ

38 :
>>33
黒背景に白地の文字が視認性あがるよ
フォントはゴシックで文字サイズも大きくする
俺の使ってるのは一般的にはオススメではないのでどうかと思うが
(New)QXエディタ(一応シェアウェアだが未登録でも機能制限も期間制限も無い)

39 :
真っ黒背景に真っ白文字は目がズキズキする

40 :
>>39
確かに、目のいい人にとってはそうかもしれないけどね
コマンドプロンプト画面がエディタ画面だと思ってもらえれば想像できるよね

41 :
color 0f
は目に痛い

42 :
目のいい人がコメントしたって意味ないだろ
老眼やかすみ目で文字が読みにくくなったらわかるよ
特に、カンマとピリオドの区別が付かないとストレス溜まるぜ

43 :
>>33
サクラエディタ入れて
IPAゴシックフォントにする

44 :
背景は薄い黄緑色にしてる
目が疲れない

45 :
そういえば昔のホスト端末とかって黒背景に緑字が多かったよね?
あれってなんでだろ?

46 :
>>45
グリーンディスプレイがあったからじゃね?

47 :
緑やオレンジの蛍光体の方がTVの白蛍光体より刺激が少ないから採用されていたらしい

48 :
>>40
適当な画像エディタのスポイトで抽出してみればわかるけど
コマンドプロンプトは黒と白じゃなくて黒とグレー
理由は目への配慮

DQも同じ

49 :
皆様たくさんのレスありがとうございます

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

他、挙げて頂いたアドバイスも順次時間が取れ次第試して行きたいと思っております
次はサクラエディタを試用する予定。他候補にMery、QX
コマンドプロンプトは color 07 不透明度80 で使っております
かすみ目、乱視、老眼、ド近眼、何れも酷いです
他に思い付いたアドバイス等ございましたらよろしくお願いします

50 :
>>43
フォントはVLゴシックのほうがいいと思う

51 :
gPadは色弄りやすい

52 :
>>50
あのフォントゼロに斜線が入ってるから使ってる

53 :
>>48
>DQも同じ

ドラクエ?

54 :
ms製wgetなんてあったんだな
何故か異様に遅いが

bitsadmin /Transfer htmlget https://www.google.co.jp/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png c:\logo.png

55 :
フォントはMyricaがClearTypeと相性がいい

56 :
VLゴシックは行間空き過ぎ
同じ行数が表示出来るようフォントサイズで調整した場合
VLゴシックのフォントサイズ10に対しIPAゴシック12、MSゴシック13
やたらと空行入れたがる脳みそスカスカの空行厨が好みそうなフォント
自分にはIPAゴシックよりVLが良い点が見当たらないので
>>50さん、どの辺が良いのか具体的に教えていただけると助かります

57 :
>>54
これは知らんかった
バッチファイルで夜間にダウンロードとかに便利だな

58 :
>>54
動かなかったんで/helpしてみたら、WindowsXPのbitsadminには/Transfarが無かった(version 1.0 [ 5.1.2600.0 ])
調べてみたら、
Windows XP Service Pack 2 サポート ツール
https://www.microsoft.com/ja-jp/download/details.aspx?id=18546
をインストールすればいいことが判った
version 2.0 [ 6.6.2600.2180 ]

59 :
Myrica良いね
|が破線なのと\→\バックスラッシュに違和感あるけど慣れればこっちの方が見分け楽そう

60 :
set test=%1
for /f "delims=" %%f in (%test%) do (
E:\test\test.bat %%f
)

上記のfor処理にテキストのファイルパスを一つずつ読み込ませて専用batで処理した後に
全部終わったらシャットダウン処理をしたいのですが
ループ処理に割り込ませる方法って何かありますか?

61 :
質問の意味が不明瞭
全部終わった後でいいならforの後にshutdown書けばいいんでないの?
for中に割り込ませたいのは何故?

62 :
set test=%1
for /f "delims=" %%f in (%test%) do (
E:\test\test.bat %%f
)

shutdown /S /T 30

単純にこれでうまくいかなかったので割り込ませる必要があるのかと思い質問しましたが
やっぱりそんなわけないですよね・・・
単純なミスをしてる可能性が高そうなのでもう一回見直してみます

63 :
callしてないからtest.batから帰ってこないだけでは

64 :
あちゃーほんとだ
普通に動いてたから気づかなかった・・・
アホですね
ちょっと修正してテストしてみます
指摘ありがとう

65 :
ソフトを起動した際に出るライセンスキーを入力する画面に値を自動でいれたいです。
batで可能でしょうか?

66 :
ahk

67 :
batでgrep検索をしようと思ってるんだけど、
検索結果にファイルのフルパスを出力する方法を教えてください><
現状だとファイル名+行の内容しか出ない・・・

68 :
複数のファイルがあり、ぞれぞれ中身が
fileID: aaaa within(
);

fileID: akf within(
);
などfileID: ~ within();は固定です。

各ファイルのaaaaやakfを読み込みの際に変数に取り込みたいのですがどのように書けばいいでしょうか?
fileID: aaaa within(はファイルの一行目なので set /p fl=< %inputFile% でとれました。

69 :
テストしてないけどこんな感じ。必要ならusebackqとかも。aaaaに&とか入るならsetでクオートする必要がある
for /f "tokens=2* delims= " %%a in (%inputFile%) do (
set ID=%%b
goto :NEXT
)
:NEXT
または
set /p fl=< %inputFile%
for /f "tokens=2* delims= " %%a in (%fl%) do set ID=%%b
または
for /f "tokens=2* delims= " %%a in ('findstr /b /c:"fileID" "%inputFile%"') do set ID=%%b

70 :
>>69

"within("しか取れませんでした。

71 :
書いたコマンドとテストした対象ファイルの1行目をコピペで貼ってみ

72 :
助けて下さい!
毎月第二木曜日の16:00になったら
Aフォルダに入っているgファイルにBフォルダに入っているgファイルを上書きする
batファイルを作って下さい
よろしくお願いします

73 :
>>72
ファイル上書きのBAT(c:\xxx.bat)を作成してタスク登録する

schtasks /create /sc monthly /mo second /d thu /st 16:00:00 /tn title /tr "c:\xxx/bat" /ru username /rp userpassword

74 :
>>73
ありがとうございます!

75 :
set txt="C:\scr\a.txt"
for /f "delims=, usebackq tokens=1,2,3,4,5,6,7,8" %%i in (%txt%) do (
set /a X="(%%j-%%i)+(%%l-%%k)+(%%n-%%m)+(%%p-%%o)"
)
echo %X%

forを使った計算について質問ですがa.txtから数値を抜き出し計算したいのですが最後の二つが空の場合があり
この場合は%%pと%%oですがその場合はエラーになって強制終了してしまいます
gotoを使う方法は思いついたのですが他に空だった場合にゼロを代入するなどは可能でしょうか?

76 :
set txt="C:\scr\a.txt"
for /f "usebackq tokens=1,2,3,4,5,6,7,8 delims=, " %%i in (%txt%) do (
set /a X=%%j-%%i+%%l-%%k+%%n-%%m, po=%%p-%%o
)
set /a XX=X+po
echo %XX%

77 :
echo ^
とすると more? と出る
??

78 :
>>76
空の場合に1が代入されてエラーを回避できました
サンクス

79 :
特定のフォルダ内のテキストファイルを処理するバッチを作りましたが

@echo off
for /f "usebackq delims=" %%i in (`dir /B /S "E:\text_sc\*.txt"`) do (
echo %%i
call E:\work\syori.bat "%%i"
)

syori.batで処理したテキストを忘れないようにリスト化(syorizumi_list.txt)

aaa
bbb
ccc
のように処理したテキストの名前だけ縦に追記

次回から新しいテキストファイルが同じフォルダに出来た場合にsyorizumi_list.txtの
処理済みのテキストを除外して処理したいのですが
コマンドのアドバイスを頂けないでしょうか

80 :
>>79
もし、その入力ファイルをその後弄らないのならファイル属性を弄るのがいい
例えば、アーカイブ属性を削るとか読み取り専用属性にするとか
そうすれば、forの中のdirに/aで分別できる
それが無理な場合は、こんなかんじでファイルに登録されているかどうかチェックするとかかな
findstr /x "%%~ni" syorizumi_list.txt >nul
if errorlenel 1 (
echo %%i
call E:\work\syori.bat "%%i"
)
)

81 :
>>80
レスありがとうございます

読み取り属性の方は最終手段としてとりあえず書かれたコマンドを追記してテストしていますが
エラーで強制終了してしまいます・・・
ヒントは頂けたのでちょっと考えてみます

82 :
処理済みファイルを下位ファルダに移動させるとかじゃダメなの?
それが1番楽だと思うけど

83 :
ダメではないですし意地になってるだけです・・・
すいません
どうしようもなければそうしおうと思います

84 :
>>81
ただのtypoだから(errorlevel)
あと処理済ファイルの指定はフルパスにしないとダメかも

85 :
あと、移動させるなら下位フォルダはダメだよ
dir /sではそれも対象だから

86 :
>>84
修正したら動きました!
ありがとうございます
ただsyorizumi_list.txtに
aaa
bbb
ccc
とあったらaaaしか除外してくれませんね・・・
もう少し調べてみます

87 :
>>86
まあこっちが悪いっちゃ悪いんだけど、これくらい修正して使って欲しかった
/c:"%%~ni"

88 :
>>87
眠すぎたのと集中力が散漫で気づいてないだけでした・・・
すいません
それと指摘の通り/c:に変えたら期待通りの動作になりました
サンクス!

89 :
>>88
その言い方に嫌な感じがするんだがちゃんと引数の意味を調べて使ってるよね
/x /c:"%%~ni"としてるんなら、変な勘ぐりスマン

90 :
>>89
/x /c:"%%~ni"で問題なく動作しています
細かいところまでありがとう

91 :
こんなろくに理解せずそのまんまコピペして使ってるとトラップに引っかかるぞ

92 :
下位フォルダに移動することも検討してるなんてレスから
/sが必要だとも思えんよね

93 :
もし/sが意図通りだったら
aaa.txt
aaa\aaa.txt
なんて状況どうするんだって話だし

94 :
>>89
> その言い方に嫌な感じがするんだがちゃんと引数の意味を調べて使ってるよね
同意
88の1行目で奴の人物像がすべて分かる

95 :
引数 %1 %2 ,, は%9 までだが
shiftで取り出せば%10以上でも取り出せた

96 :
Cドラのdown配下のmp4とaviを
DドラTozakaruzoSaikonkaraに集約してコピーしたいときはどうするの?

XCOPY "C:\down\*.mp4” "D:\TozakaruzoSaikonkara\" /d /e /h /r /y
XCOPY "C:\down\*.avi" "D:TozakaruzoSaikonkara\" /d /e /h /r /y

ワイルドカード使いたいけど、eroやmoroのところが難しい
for文の記述の方がいいなど、よろしくお願いします。

C:/
├down/
│ └ ero/
│   └ 111.mp4
│ └ moro/
│   └ xx2.avi
│ └ zzz.mp4
│ └xxx.avi

D:/
├TozakaruzoSaikonkara/
│ └ 111.mp4
│ └ xx2.avi
│ └ zzz.mp4
│ └ xxx.avi

97 :
robocopy /?

98 :
>>96

cd /d c:\down
cd d:TozakaruzoSaikonkara
for /r %%i in (*.avi *mp4) do copy /y "%%~fi" d:

99 :
cd d:\TozakaruzoSaikonkara の方がいいか

100 :
もしフォルダが無いなら
md d:\TozakaruzoSaikonkara 追加してくれ


100〜のスレッドの続きを読む
ほぼ初心者プログラマでするべき事がわからない
【Alloy】形式言語による仕様記述【VDM】
オブジェクト指向の活用方法を教えて下さい
【質問】C++でソフト開発したい!【初心者】
C言語なら俺に聞け 152
【PHP】下らねぇ質問はここに書き込みやがれ 10
datファイルを共有するP2Pソフト o2on 17dat
コメント研究すれ。
Microsoft Silverlight その9
【C++】高速化手法【SSE】2
--------------------
オスカルはなきんリサーチ★1
星雑part.51
【中央日報】525兆ウォン、一度も経験したことがない韓国公共機関の負債 [4/30] [新種のホケモン★]
よく「銅の剣と50ゴールドw」って言うけど
【指輪】喪女のアクセサリー事情79【ネックレス】
【バーチャルYoutuber】にじさんじアンチスレ21【ちーめろVSお静2018】
JRA WIN5 ★139 2/9〜
男のVIO脱毛★3【デリケートゾーン】
【神戸教師間いじめ】加害教諭の1人が児童に「あなたのことが嫌い」…椅子を後ろに引かれて頭を打った児童も ★2
【インド】 全土で外出禁止令・・・新型コロナ感染拡大防止
新型コロナっていつ収束するの? 政府の対策はどうすればいいの? みんなの仕事大丈夫?
☆怪魚・大物総合スレ☆ Part1
俺がデビューするまで
【撃沈出禁】おっさんひとり飯・高野俊一38【変態】
【吉川晃司】COMPLEX-コンプレックス- partB【布袋寅泰】
マニアックな爬虫類を飼ってる人集まれ
北海学園大学法科大学院Part10
rice! I.O.I.5
限定コフレ・キット・アイテムコスメイベント116
【サッカー】ブンデス第31節 再開後好調な鎌田大地が2点目アシスト! フランクフルトを4-1逆転勝利に導く 25試合2得点 [砂漠のマスカレード★]
TOP カテ一覧 スレ一覧 100〜終まで 2ch元 削除依頼