TOP カテ一覧 スレ一覧 100〜終まで 2ch元 削除依頼
Lisp Scheme Part40
SDL=Simple DirectMedia Layerでゲームだ
C++相談室 part135
Kotlin 5
次世代言語13 COBOL Java PHP VBA Ruby
エスパーが質問に答えるスレ
C++相談室 part147
アセンブラ初心者スレッド 2
音声合成プログラムを作りる
2chの荒らし報告の書式対応のプログラム

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


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

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

それ以前の過去スレ
%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 :
スレ作った

3 :
>>1
いちおつ


ところで、最近、プロンプトの色が変わってしまったんだが直し方教えてください
くすんだ感じになってしまう

color 9f

とか明るい色が顕著
自分で加えた変更の何が影響したのかわからず、途方に暮れてます

4 :
タヒ

5 :
>>1
テンプレ文だがもうWSHよりはPowershellじゃないのかしら?

6 :
powershellはここの板に別スレがあってここで取り扱う必用は無い
一方wshはもはや専用スレは無くこのスレに含めた形で残っている

7 :
>>3 自己レスです

レジストリの
HKEY_CURRENT_USER\Console にある ColorTableXX で指定された
色 00BBGGRR がソレだったので何かが変だった訳でもなく、忠実に
この値を読んでいただけでした

黒をわざわざ 0c0c0c にしていたり、全テーブル 00 から 15 まで
全て変更が入っていたので、いつの間に変更したのかという疑問が
残りますが……

8 :
>REG QUERY "HKCU\Console" /f ColorTable*

HKEY_CURRENT_USER\Console
ColorTable00 REG_DWORD 0x0
ColorTable01 REG_DWORD 0x800000
ColorTable02 REG_DWORD 0x8000
ColorTable03 REG_DWORD 0x808000
ColorTable04 REG_DWORD 0x80
ColorTable05 REG_DWORD 0x800080
ColorTable06 REG_DWORD 0x8080
ColorTable07 REG_DWORD 0xc0c0c0
ColorTable08 REG_DWORD 0x808080
ColorTable09 REG_DWORD 0xff0000
ColorTable10 REG_DWORD 0xff00
ColorTable11 REG_DWORD 0xffff00
ColorTable12 REG_DWORD 0xff
ColorTable13 REG_DWORD 0xff00ff
ColorTable14 REG_DWORD 0xffff
ColorTable15 REG_DWORD 0xffffff

9 :
>>6
> powershellはここの板に別スレがあってここで取り扱う必用は無い
別にここで取り扱えという話じゃなくて「使用も検討しましょう」って話な
PowerShell の話題が出たら誘導すればいいだけだし

> 一方wshはもはや専用スレは無くこのスレに含めた形で残っている
wshの専用スレがないのは需要がないからだろ
そんなものに対して使用を検討する必要なんてないと思うぞ

10 :
>>8
デフォルト値ありがとうございます

実際にOSインストールしなおしての確認はしてないのですが
Win10_1809Oct_Japanese_x64.iso の install.wim の
install.wim\3\Users\Default\NTUSER.DAT
ハイブファイルのロードをしてみると変化していた方の配色と一致してました

OSクリーンインストール後、しばらく変化に気づいていなかっただけ、
という事のようです
少し透かしていたから 000000 と 0c0c0c の違いに気づくのもほぼ無理ゲー、
だったのも加味して……

スレ汚し失礼しました

11 :
俺も以前に経験あるが何で勝手に変わるのか未だに不明
デフォにしたけりゃ"HKCU\Console"消して起動したらいいんだけど

12 :
>>8 だが
俺も"HKCU\Console"消して起動したら
ColorTable00 が 0x0 から 0xc0c0c になったよ
今はこれがデフォルトなんだな

13 :
dir | more でEnter押すと1行ずつ出てくるんだけど
前からこんな動作だったっけ?
dir /p みたいにページごとにスクロールしないのか?
ちなみにWin10Pro 1809 17763.107 だ

14 :
すまんhelp見たら
<ret> 次の行を表示します。
になってた。

あとスレチだが gpg -d がエラー出る...

15 :
このスレってテンプレに「 次スレは>>970踏んだ人が立てましょう 」とかないんだね。
毎回同じ人が立ててるのかな?

16 :
ffmpegで動画容量を減らしています
この先何度も使いそうなのでドラック&ドロップなどで簡単にしたいのでバッチファイルの作り方を教えていただけませんか
また,バッチファイルでなくとも他に良い方法などありましたらぜひお願いします

ffmpeg -i "sample.mp4" -b:v 500k -pass 1 output.mp4

ffmpeg -i "sample.mp4" -b:v 500k -pass 2 output.mp4

普段はこれを実行しています

17 :
シェルスクリプト・PowerShell もあるけど、
安全性のため、ダブルクリックでは動かない

ダブルクリックで動くのは、バッチファイルだけ

18 :
>>16
オイラはSendToにバッチファイル(のショートカットでもOK)入れて右クリックの送るから使ってる
C:\Users\ユーザ名\AppData\Roaming\Microsoft\Windows\SendTo

2-passは使ったことないけど、とりあえず >>16 の処理をするようになってるはず
適当なファイル名を拡張子batで保存して使ってちょ
書き込み時にインデント消えちゃうかもしれないけど、3行目の&&の前だけは先頭に空白1文字以上入れてちょ

for %%f in (%*) do (
ffmpeg -y -i "%%~ff" -b:v 500k -pass 1 -f mp4 NUL ^
&& ffmpeg -i "%%~ff" -b:v 500k -pass 2 "%%~df%%~pf%%~nf_output%%~xf"
)
pause

自動でウィンドウ閉じたければ最後のpauseはいらない
出力ファイル名は入力ファイル名_outputにしてるけど、お好みで変えればよい
複数ファイルも順番に処理するよ

19 :
typeコマンドってパイプかますと出力が変わるんだな...
以前はこんなじゃなかったような気がするが?

>type a
abc漢字def

>nkf -SjO a b

>nkf -Js b
abc漢字def

>type b
abc4A;zdef

>type b | more
abc$B4A;z(Bdef

20 :
"C:\hoge.exe"というプログラムを再起動したくて

 taskkill /im hoge.exe /f
 start C:\hoge.exe

という2行のバッチを書いたら、hoge.exeがまだ終了しきってなくて起動しませんでした。
hoge.exeの終了にかかる時間が3秒だったり20秒だったりとまちまちなので
タスクリストから居なくなったことを確認してから起動したいのですが
どう書けばよいのでしょうか?

21 :
TASKLISTで確認?

22 :
>>20
こんな感じでどうだろうか?

taskkill /im hoge.exe /f

:check_run
timeout /t 1 /nobreak >nul
tasklist | find "hoge.exe" >nul && goto check_run

start C:\hoge.exe

23 :
>>20
tasklist xx|findstr xx
if %errorlevel% == 0

24 :
今help見たら、まだ直ってねえ...
tasklist/?のフィルター名IMAGENAMは間違いだ...
for /f "skip=1" %%i in ('tasklist /fi "imagename eq hoge.exe"') do goto check_run

25 :
あ、条件が逆w...

26 :
逆じゃないなw ボケたなあ...

27 :
みなさんレスありがとうございます!

明日職場で試してみますね。

恥ずかしながら自宅PCが古すぎてtasklistコマンドとかが無いので
(WinXP Homeです。Win7が故障中なので…)

どうもありがとうございました!

28 :
XPならtimeoutも無いから

29 :
XPってtaklistすらないんか…( ゚д゚)ポカーン

にしては↓のスレは盛況だなw

WindowsXPを使い続けるよ Part94
https://mevius.2ch.sc/test/read.cgi/win/1543650955/

30 :
XP Proにはあるんだが
XP HomeではPowerShellのGet-Processで代用できるらしいよ
PowerShell1.1以降らしいから、PowerShell2.0をインストールしないといけないけど

31 :
Sysinternals Suite にある、pslistを始めとするコマンド群を利用すれば、
XPでも同等のことは出来る

32 :
XPの駆除には苦労した。
Vistaの切られぶりには辟易。
管理者って損な役回りだよなぁ…。

今は7の駆除中。

33 :
>>18
ありがとうございます
レス内のものは上手く行きませんでしたが別でうまく行くものを作るためのヒントになりました

34 :
>>19
それパイプ処理してるコマンドの方の問題じゃなくて?

35 :
俺には何が原因か分からない
画面コンソール入力するたびに最下段にスクロールするし
スレチだけど
gpg -d で画面表示させるとエラー
gpg -h で画面表示させると文字化けまくり
cmd の表示関係が最近おかしい...

36 :
xcopyで出来ることは全てrobocopyでも出来るという認識で良いのでしょうか?

37 :
>>36
削られてるオプションもあるけど「出来ること」に関してはほぼその認識で合ってるんじゃないかな。
ただ、xcopy が対話指向なのに対して robocopy はバッチ指向になってる。(言い換えればログ指向)
コマンドを置き換えれば良いというものではない。場合によってはログが五月蠅い。

ま、今時、ネットワーク越しやバッチ処理でのコピーに xcopy は御法度レベルだから xcopy なんか忘れちゃってもいいと思う。

38 :
>>37
>ネットワーク越しやバッチ処理でのコピーに xcopy は御法度レベルだから xcopy なんか忘れちゃってもいいと思う。
そうだったのか、情報ありがとう
調べたらxcopyを使ったバッチファイルがあった、なおそ

39 :
xcopyはほぼフォルダ丸ごとコピー用途に使ってたから
/mirオプションで済むrobocopyの方が覚えやすくて助かるw
コピー自体も高速らしいし

40 :
>>38
xcopy はコピー中にネットワークが切れたりするとファイルがシレっと壊れるのだよ。
ノートPCがバッテリーアウトでハイバネーションに入るような時に起こりやすい。

対話式に目で動作を見ながらの分にはいいけど、それ以外の用途にはお勧めしないのだ。

41 :
単純コピーだったらxcopyの方がはるかに早かった気がするんだが

42 :
ネット越しだと、SSHが使えるrsyncがいいんだけど、
Windowsで使うにはcygwinが必要になるのでやや使いづらいかも

そこで、クラウドでも使えるrsyncという触れ込みのrcloneがいいかな
タイムスタンプだけが変更された時でも、実体をコピーすること無く、タイムスタンプだけを変更するなど、
それなりに賢い処理がされるようだ
もちろんローカルファイル同士でも使える

バッチによる基本的なバックアップ用途の使い方しかしていないけど、とにかく多機能でおすすめ
GoogleドライブやOneDriveなんかのクラウドへのバックアップも、バッチ処理で簡単にできる

43 :
>>41
過去にrobocopyのが速いみたいな記事を見た気がしたんだが
今探しても見当たらないので記憶違いかもしれぬ…

44 :
Windows 10 19H1 で notepad が
BOM無しUTF-8がデフォルト になるそうだな...
いっそのこと コマンド プロンプトも変えてくれ

45 :
バッチファイルの第一引数をファイル名にしたとして
ファイル名に&とか^が入るときどうやって処理すればいいの?
代入するとエスケープされて消えちゃうのよ。

46 :
結局、BOM の有無を気にする開発者がいなかった。
欧米人には関係ないから

ただ、Explorer では、BOMが無いと、UTF-8・sjis の区別がつかないから、文字列で検索できなくなるから、
漏れは、Windows10・WSL・Ubuntu16.04 で、grep を使っている

47 :
>>45
入らないようにする

48 :
>>45 バッチファイルに直接D&Dで起動用のバッチ
というか他の起動方法なら引数を引用符で囲むだけだし

@ECHO OFF
IF "%~1"=="1" SHIFT /1 & GOTO MAIN
SET "A=%CMDCMDLINE:"=*%"
SET "A=%A:~0,-1%"
FOR /F "tokens=2* delims=*" %%I IN ("%A%") DO SET "B=%%I" & SET "C=%%J"
SET E="%B%" 1
:NEXT_ARG
SET "A=" & FOR /F "tokens=*" %%I IN ("%C%") DO SET "A=%%I"
IF NOT DEFINED A %E%
IF "%A:~0,1%"=="*" (SET "D=*") ELSE SET "D= "
FOR /F "tokens=1* delims=%D%" %%I IN ("%A%") DO SET "B=%%I" & SET "C=%%J"
SET E=%E% "%B%" & GOTO NEXT_ARG

:MAIN
SET /A N=0
:LOOP
IF "%~0"=="" PAUSE & GOTO :EOF
ECHO ARG%N%=%0
SET /A "N+=1" & SHIFT & GOTO LOOP

49 :
ありがとうございます。

50 :
dir ってオプション(スイッチ)の順番で表示が異なるのを発見
CD /D C:\
dir /AH /A-D
dir /A-D /AH

51 :
話変わるがスペース無くてもOK
CD/D"C:\
DIR/AH/A-D
DIR/A-D/AH

52 :
その仕様のせいでパス区切り文字を/にすることができないという呪いが

53 :
仕様がカオスになってるよね。
はやくLinuxcommandも標準対応して欲しい

54 :
>>53
DOSってMS最古だから、ビルベイツ謹製のコードか仕様が残っていて
今の社員は恐れ多くて変えられない
ということにしておこう

55 :
>>51
そうだったのか、サンクス

56 :
>>53
永久にならないから忘れろ

57 :
>>43だけどやっぱわからん!
sendtoにバッチファイル入れといてフォルダを指定します。
指定したフォルダの名前をechoで表示したいんだけど&^がフォルダ名に付けられているとフォルダ名表示が出来ない。

batファイル &というフォルダを右クリック送るをした時

@echo off
echo "%~f1"  これは表示できる
set fname="%~f1"
echo "%fname%" &や^が消えてしまう

どうやったら代入ができるの?エスケープに置き換えも一文字分しかできないし。

58 :
set "fname=%~f1"

59 :
>>57
echo %fname%

60 :
あ、ごめん
どっちでもいいよ

61 :
バッチファイル中の*.*で、そんなファイルはないとエラーが出た
もう一度実行するとこれまでどおり問題なしに実行

windows更新の影響かセキュリティソフトのせいかも知れないが、
ウィルスがコマンドをすり替えている可能性もあるから、バッチ中のコマンドはパスも含めて
たとえばnotepadでなくC:\Windows\notepad.exeの方が安全だなと思った

62 :
話変わるが
今は *.* としても意味無いよ * だけでOK

63 :
>>62
そうですか、昔のくせでつい
ありがとうございます

64 :
色んなソフト入れると %PATH% が膨れ上がる
使わないパスが30個とか..
気味が悪いのでバッチの先頭に
PATH C:\WINDOWS\system32;C:\WINDOWS;
と書くようにしてる

65 :
既に存在しないフォルダが環境変数PATHに設定されてるとコマンド検索がそこで止まってしまう
こんなのを使って時々確認するといい。
powershell $env:path -split ';'^|%{$_ ,(test-path $_ -patht cont ^)}

66 :
遅延環境変数OFFでやると面倒だ
ONにするとパス名などの文字列の扱いが複雑化して読み取れないのが出る

67 :
PowerShell で、$env:path -split ';' と打つと、

C:\WINDOWS\system32
C:\WINDOWS

Intel を除いて、これらが先頭に来る

68 :
>>67
普通はね

69 :
@echo off & set "p=%path%"
:v
for /f "delims=; tokens=1*" %%i in ("%p%") do set "p=%%j" & echo "%%i"
if defined p goto :v

おらの環境
"C:\Program Files (x86)\Common Files\Oracle\Java\javapath"
"C:\ProgramData\Oracle\Java\javapath"
"C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common"
"C:\Program Files (x86)\Intel\iCLS Client\"
"C:\Program Files\Intel\iCLS Client\"
"C:\WINDOWS\system32"
"C:\WINDOWS"

70 :
マイクロソフトがどこまでチェックしているか知らんが
コマンド追加したら干渉する可能性はあるな

71 :
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 :
↑HOGEの下には実際にはaaa〜cccのようなフォルダが無数にあります…

73 :
↑たびたびすみません。
正確に言うと「HOGE配下に存在する"old"という名前のフォルダとその中身を全て削除する」です。

74 :
for /d /r
とif文つかえばいいだけじゃん

75 :
del

76 :
FOR /R C:\HOGE %%I IN (.) DO rd/s/q "%%~I\old" 2> nul

77 :
バッチにするまでもない
直接入力なら%%を%に

78 :
>>76
rdのところ
rd/s/q "%%~I\old\"
にした方がよいと思う

79 :
おいらならこう書く

for /d /r c:\hoge %a in (old) rd /q /s %a

80 :
>>76
どうもありがとうございます!バッチリ削除できました。

>>78
私も>>78さんのコメントを読んで例えば"old2"という名前のフォルダがあったらこれも消えてしまうのかも?と思ったのですが、そんなことはありませんでした。
でも見た目でそのような疑問を覚える人もいるかもしれないなと思い、特に不要ではあるのですが"old"のあとに"\"を付けることにしました。
ありがとうございます。

81 :
でもrdはディレクトリ削除コマンドなんだから最後に"\"を付けるのは不自然か…

82 :
>>78 なぜ?
>>79 ワイルドカードじゃないとオプション /D は無意味
これでもいいが
FOR /R %%I IN (OLD) DO RD/S/Q "%%I" 2> NUL

83 :
>>82
>ワイルドカードじゃないとオプション /D は無意味
ちゃんとフォルダのみをフィルタするよ、試してみてね

84 :
そうかな?
RD の前に echo 付けて見たら?
ファイルでも RD OLD がでるぞ
FOR のヘルプをよく見てね

85 :
ざっくり言うと、
EternalForceBlizzard.bat C:\hoge
とかいうバッチが欲しいという中二に対して「俺なら!」「俺なら!」とやってた流れ…かな。

>>82
どうでもいいけど全部大文字とかやめれ。
内容は知らんが死ぬほどダサい。

86 :
今後は小文字にするよ。気が変わるかもしれんが。
forの括弧内のファイルは存在しなくてもスキップしない
例外はワイルドカードで対象はファイル
/dだと対象はフォルダ
ただそれだけの話だ

87 :
findstrの結果に文字列を連結したいのですがうまくいきません
どうしたらよういでしょういか?

cd /d %~dp0
type test1.txt | echo"りんご" & findstr "りんご" >> out.txt

88 :
call :a "りんご" test1.txt > out.txt & goto :eof
:a
echo %1 & findstr %1 %2

89 :
>88
ありがとうございます。

[りんご]
[りんごを含んだ文]
[りんごを含んだ文]
[りんごを含んだ文]

といった感じにでました。

[りんご][りんごを含んだ文]
[りんご][りんごを含んだ文]
[りんご][りんごを含んだ文]

という感じはならないでしょうか?

90 :
call :a "りんご" test1.txt > out.txt & goto :eof
:a
for /f delims^=^ eol^= %%i in ('findstr %1 %2') do echo.%1 %%i

91 :
>90
おお!、うまくいきました。ありがとうございます!。
エクセルの&のように簡単なのかと思ったら以外と複雑な処理で驚きです。

92 :
単に行数を少なくするだけの&の使い方で
デバッグもメンテの面でもいい事はないんで行を分けて書いたほうがいい

93 :
そういうのは質問者の方で調整よろしくお願いします

94 :
>>93
別に>>90に文句言ってるわけじゃなくて
質問者が&に感心してたので、質問者にアドバイスのつもりで書いただけ

95 :
言いたい事は分かります。
はっきり言って自分用のバッチはこんな書き方はしません。
行数を抑える為に繋いでるだけなんで。
バランス見て改行します。すみません。

96 :
って思ったら、質問者は&に感心してたわけじゃなくて
逆に&で簡単に書けない点が不満なんだな

97 :
Basic言語では&は文字列結合演算子だが
バッチスクリプトは出自からBasicじゃないので&は別の意味(ステートメントメント区切り)となる
文字列結合演算子自体が存在しない

98 :
昨日の質問者です、たびたびすみません

複数ワードを処理しようとして
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窓に「別のプロセスが使用中です」と表示されてしまいます。

なにかメモリ的なものがいっぱいになるのでしょうか?
回避方法はありますでしょうか?

99 :
意味不明だが?

@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

100 :
今時、メモリ不足とか滅多に無いよ。
バッチで80byte文字列の一万個の配列変数とかやったことあるけど
問題なかったよ。


100〜のスレッドの続きを読む
.Net Core / Net ASP Core
【iPhoneも】Titanium Mobileスレッド【Androidも】
Visual Studio 2010 Part21
Visual Studio 2013 SP8
Visual Studio 2017 Part5
【C++】マイナーGUIツールキット
小学生プログラマだけど質問ある
Visual Studio 2015 Part8
SDL=Simple DirectMedia Layerでゲームだ
2進数や16進数を覚える意味がわからない
--------------------
【スペース・オペラはS.F.ではない】好きなSFアニメは?「銀魂」を抑えたトップは社会現象を起こしたあの金字塔 [979264442]
オブジェクト指向、DIとService Locatorの違いを教えて4
チャンネルがーどまん&遠藤チャンネルpart1
【ぱくぱく】このお菓子で太りました【ぶくぶく】
☆東都大学野球応援団・チア10★
【Canon】 EOS R/RP Part46 W【キヤノン】
【Glee】American Horror Story【Horror】
【自転車乗りの】公道車道の走り方【鑑たれ】141
あの日を境に
【リアル】40代の年収額と貯金額 17【のみ】
【絡み禁止】Twitter愚痴スレ@同人板 その297【レス禁止】
【30代以上】スプラトゥーン2 中年専用スレ7【昭和生まれ】
【PBW】Pandora Party Project ウォッチスレ6【PPP】
姉がうざい。その2
【ミンスサポの祖国】韓国の大統領専用機が到着 クルーズ船乗客帰国へ ネット「これが専用機?」「プロペラ機」「たった5人?
【SOA】スターオーシャン:アナムネシス Part2651
【頭がいい人】@micorun【悪い人】
【DQW】ドラクエウォーク 無課金スレ part.92【コテハン禁止】
SKE48を好きなオッサンいる?【谷ヲタ立入禁止】3
【日韓】韓国市民団体、軍艦島のユネスコ世界遺産登録削除を要請へ[08/03]
TOP カテ一覧 スレ一覧 100〜終まで 2ch元 削除依頼