Questions tagged [batch-file]

ここでの バッチファイル とは、 主に Windows 環境で実行されるバッチファイル (スクリプト) に関する質問に対してタグを使用してください。Linux の シェルスクリプト関連には [shellscript] タグがあります。

バッチファイル (Batch File, BAT ファイル, バッチスクリプト) は、 DOS, OS/2, Microsoft Windows 環境で利用可能な、コマンドインタプリタ (古い環境では COMMAND.COM, OS/2、新しい Windows では cmd.exe ) により実行されうる一連の命令が含まれたテキストファイルです。

バッチファイルを使用することで、繰り返し作業を簡略化することができます。バッチファイルの拡張子には .bat, .cmd, .btm が使われ、コマンドプロンプトでバッチファイルの名前が与えられると、インタプリタはファイル内に表れた順番で、記述された命令を実行していきます。

以下は、バッチプログラミングにおける、典型的な "Hello World" プログラムです。

@ECHO off
ECHO Hello World!
PAUSE

※ 文字 '!' は、 EnableDelayedExpansion が有効な環境では表示されません

タグについて

この、 タグは、 Windows ベースのバッチファイル (スクリプト) のプログラミングに関する問題に使用してください。 タグは、 「バッチ処理(一括処理)」、「ひと束のファイル(batch of files)」 を表すものではありません。

便利なリンク

76 questions
3
votes
3 answers

バッチファイルにドラッグ&ドロップして、テキストファイルであれば名前を変更したい

バッチファイル初心者です。最近バッチファイルを駆使すれば面倒な作業が簡略化できることを知って勉強中です。 バッチファイルに任意のファイル名をドラッグ&ドロップすると、そのファイル名を引数として受け取り実行されることを知りました。 環境: デスクトップ上のバッチファイル (echo.bat) にテキストファイル (sample.txt) を ドラッグ&ドロップ @echo off REM %1が受け取る引数 echo…
2 Y
  • 45
  • 1
  • 4
3
votes
2 answers

第2引数以降を別コマンドの引数に渡したい

xxx.bat arg1 arg2 ... バッチファイルで別のコマンド群を呼び出すフロントエンド的な使い方をしたいと考えています。git のようなイメージです。 最初は以下のように書いてましたが、10個目以降の引数が無視されてしまうため使い勝手はあまりよくありませんでした。 @echo off set COMMAND=\path\to\%1 %COMMAND% %2 %3 %4 %5 %6 %7 %8…
kosh
  • 2,415
  • 2
  • 13
  • 23
2
votes
1 answer

バッチファイルで%~dp0の末尾のディレクトリセパレータを取り除く方法

バッチファイル内で%~dp0とすると実行中のバッチファイルのディレクトリパスを取得できますが、末尾に\が付いてきてしまい、これが不便なことがあります。 下記のように末尾のセパレータなしで実行中のバッチファイルのパスを取得できないでしょうか。 X C:\home\local\ O C:\home\local
user3270390
  • 1,088
  • 3
  • 17
  • 34
2
votes
1 answer

バッチファイルの引数を出力ファイルに追記していくにはどうすればいいでしょうか。

バッチファイルの引数を出力ファイルに追記していくにはどうすればいいでしょうか。 例えば、parameterを取得して追記していくバッチファイルhoge.batがあるとします。 cd C:Program Files (x86)¥hogehoge¥hoge.exe hoge.exe getparameter >> parameter.log 結果は 023 と値だけが返されるとします。 hoge.bat…
FoxTribune
  • 1,237
  • 2
  • 25
  • 52
1
vote
1 answer

forで取得したフォルダごとにサブフォルダ以下全ファイルを検索するfor文の書き方を教えてください

あるフォルダの「直下のフォルダリスト」と「直下フォルダ1つに含まれるサブフォルダ含むすべてのファイルリスト」を取得したいのですが、Batの構文がよくわからなくてエラーになります。 for /d %%A in ("Z:\親フォルダ\*") do ( ←これは動く echo %%A for /r %%A %%B IN (*) DO ( ←%Bの使い方が不正というエラーになる。%%Aの参照方法が不明 echo %%B …
MSAII
  • 174
  • 8
1
vote
1 answer

batファイル実行時、if内でsetが効かない

以下のようなコマンドを.batに記述し、win10にて実行しました。 「2」を選択した時、myValueが「after」にならない理由が分かりません。 お詳しい方、お知恵拝借できましたら大変幸いです。 @echo off set myValue="before" SET /P selected="select y,n,2:" if /i {%selected%}=={y} (goto yes) if /i {%selected%}=={yes} (goto yes) if /i…
Mrfas
  • 63
  • 1
  • 7
1
vote
3 answers

バッチファイルの文字列処理と挿入

iperfというツールを使いスループットを確認していますが、 このツールの出力結果がExcelで処理しにくい出力形式のため困っております。 ツール起動時下記コマンドで実行していますが、せめて、日時を一番左に挿入 するようなバッチにしたいのですが、何か方法は御座いますでしょうか? echo %date%%time% >> iperf.log iperf3.exe -c 192.168.1.2 -t 20 >>iperf.log Connecting to host 192.168.1.1,…
user47671
1
vote
2 answers

CMDで変数名に変数を入れた場合の表示方法

例えば以下のようなモノを作成します。 @ECHO OFF SET A=HOGE1 SET /A %A%EGOH+=1 ECHO %HOGE1EGOH% PAUSE ECHO には 1 と正しく表示されます。 しかしこれは『%A%』が『HOGE1』であるが為に動作しています。 そこで ECHO %A%EGOH PAUSE 例えばこの様な書き方で 1 を表示させたいのですが、このままでは動作しません。 どのように記述すれば良いのでしょうか?
水瀬敦美
  • 149
  • 1
  • 13
1
vote
1 answer

BATのFORでリストを取得するときの並び順について

すいません質問のタイトル及び本文の日本語が所々可笑しいかもしれません。 FOR %%i IN (*.jpg) DO ( ~ ) とした時、実際に存在する画像の名前が 1.jpg,2.jpg...9.jpg,10.jpg この様な場合、処理の順番が 1.jpg > 10.jpg > 2.jpg ... 9.jpg となってしまうのですがこれを名前順(表示)に処理することは可能ですか?
水瀬敦美
  • 149
  • 1
  • 13
1
vote
0 answers

バッチファイルで、 bash でいうところの -e 指定のようなことはできますか

ウィンドウズのバッチファイルにおいて、 bash でいうところの -e オプション指定の動作を行うことは可能でしょうか。 具体的には、バッチ内で実行した各コマンドに対して exit code が 0 でないものがあった場合には、基本的にはその時点でバッチを abort させたい、というのが、やりたいことです。 もし、そんなものなどない、という場合には、上記のようなことがやりたい場合には、どのようにバッチファイルを記述するのでしょうか。各コマンドの後ろに %ERRORLEVEL%…
Yuki Inoue
  • 16,805
  • 19
  • 80
  • 196
0
votes
1 answer

Windowsバッチファイルで検索したフォルダへcdコマンドしたい。

バッチファイルにて、あるフォルダ下にあるフォルダを順次カレントフォルダにしてコマンドを実行しようとしています。しかし、cdコマンド時点で失敗しているようです。 以下バッチファイル @echo off set CURRENT_DIR=%~dp0 set MY_PACKAGE_DIR=%CURRENT_DIR%my_project\ cd %MY_DIR% set MY_DIR=%CD% for /d %%A in (*.*) do ( echo %%A% echo…
Takahiro Funahashi
  • 884
  • 1
  • 18
  • 41
0
votes
1 answer

処理に時間がかかることがあるバッチファイルの対応。途中で強制終了する方法やエラー処理について

指定フォルダの全ファイルを削除するバッチファイルを作成しました。 通常であれば10秒以内に処理終了するのですが、稀に処理にものすごく時間がかかる場合があります。計測していないのですが、体感としては30分以上です。 cd K:\HOGE for /r /d %%a in (HOGE_DATA) do del/S /Q "%%a\*.*" Q1.稀に処理が遅くなる原因を確認する方法はありますか? 今どうなっているのか確認したいので、コマンドプロンプトか何かでプロセス?…
re9
  • 6,698
  • 29
  • 124
  • 232
0
votes
2 answers

バッチファイルが起動しない

バッチファイルとTera Term マクロを同じフォルダに設置し、バッチファイルをダブルクリックして起動しても、すぐに画面が消えてしまいます。 また、バッチファイルの起動方法をコマンドプロンプトから起動すると、以下のようなエラーが表示されていまいます。 なお、Tera Term マクロを直接ダブルクリックすれば、マクロは正常に動作しております。 バッチファイルの何が間違っているのか分からない状態なので、解決策を教えていただければと思います。 バッチファイル @echo…
user47671
0
votes
2 answers

windowsバッチファイルで指定した変数で繰り返し実行を行いたい

windowsバッチファイルで特定の文字列に対して、一連の繰り返し処理を行いたいです。 下記のようにバッチファイルを記載したのですが、echo is off というエラー文言が表示されます。 検索してみたものの、@echo off ~~ 部分の記載があれば問題なく処理できるという記載があったため修正したのですがうまく行きません。 @echo off setlocal enabledelayedexpansion ~~~~~~ ~~~~~~ set target_1 =…
amiu
  • 41
  • 8
1
2