LoginSignup
gdgawgdgaw
@gdgawgdgaw (qiitantan tatata)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

Windowsバッチ dirで指定したPathにフォルダを生成

解決したいこと

dirで指定したPathにフォルダを生成したいです。
それにあたって二点教えていただけますでしょうか。

■一点目
まず、下記のバッチを実行すると、カレントディレクトリ(指定したディレクトリ)にnewのフォルダが生成されています。
なのでフォルダの生成は実行できています。

@echo off

set path=..\test
set folderName= new
md %path%\%folderName%

しかし、newフォルダが生成される一方で、以下のエラー文が表示されてしまいます。

発生している問題・エラー

サブディレクトリまたはファイル ..\test\ は既に存在します。
処理中にエラーが発生しました: ..\test\

これは何が原因なのでしょうか

■二点目
次に、カレントディレクトリの上のディレクトリにnew2のフォルダを生成しようとするため、下記を実行してもnew2は生成されません。

@echo off

set path=..\test
set folderName= new
md %path%\%folderName%

発生している問題・エラー

サブディレクトリまたはファイル ..\..\ は既に存在します。
処理中にエラーが発生しました: ..\..\

これらはそれぞれどこが誤っているのでしょうか。

以上二点です。
よろしくお願いします。

0

1Answer

md (mkdir)のヘルプには記載されていないですが

md 引数1 引数2 ...

としたとき、引数1、引数2、...のすべてのフォルダの作成を試みるようです。

ここで、今回実行したいコマンドを展開すると

md ..\test\ new

となります。

見やすくするため、ダブルクォーテーションでくくると

md "..\test\" "new"

と、二つのフォルダの作成を試みていることがわかります。

なぜそうなったかと言えば、set folderName= newnewの前に空白が存在しているからです。

対策として、空白を除去するかまたは、以下のようにダブルクォーテーションでくくります(ただし後者は空白を含んだフォルダが作成されることに注意)。

md "%path%\%folderName%"

後者は、Program Filesフォルダのパスを指定する際に必須となるイディオムなので、覚えておくとよいでしょう

1

Your answer might help someone💌