if and else in batch これを機能させるために何度も試しましたが、問題が見つからないようです。誰か助けてもらえますか?
FOR /R "C:\Program Files" %%a IN (.) DO
if exist "%%~a\yes.txt" (
echo yes
) else
(
md Pictures
)
if and else in batch これを機能させるために何度も試しましたが、問題が見つからないようです。誰か助けてもらえますか?
FOR /R "C:\Program Files" %%a IN (.) DO
if exist "%%~a\yes.txt" (
echo yes
) else
(
md Pictures
)
説明書を読むべし!
if /?
括弧は と同じ行になければならないと記述されていますELSE
。
FOR /R "C:\Program Files" %%a IN (.) DO (
if exist "%%~a\yes.txt" (
echo yes
) else (
md Pictures
)
)
cmdシェルの構文では、「()」がまだ開いていない限り、コマンドは行末で終了します。したがって、上記のコードでは、次の行
FOR /R "C:\Program Files" %%a IN (.) DO
完全なfor
ループです-ループしてDO
何もしていません。コマンドを別の行に続けるにはFOR
、「(」を追加する必要があります。
FOR /R "C:\Program Files" %%a IN (.) DO (
If
これで、ステートメントを使用してコマンドを続行できます。If
同じことがあなたの声明にも当てはまります。入力しました
if exist "%%~a\yes.txt" (
echo yes
) else
したがって、行末の「(」は、の行IF
の一致する「)」まで続きますが、同じ行のelse
後に「(」がない場合、コマンドは終了し、構文的に正しくありません。else
if
しかし、あなたのコードが本当にあなたが望むことをしているのかわかりません。コマンドを実行したディレクトリに「Pictures」ディレクトリを作成しようとします。また、ファイルを含まない「C:\ Programfiles」のサブディレクトリが見つかるたびに、繰り返し作成しようとします。 "yes.txt"(これはたくさんのディレクトリになります)。したがって、最初に「tmp」を作成すると、それ以降のすべての試行でエラーメッセージが表示されます。
ここで重要なのは、ループがディレクトリ名を%% aに割り当てることですが、そのディレクトリには「CD」が割り当てられないため、ループを開始するディレクトリに「入った」ままです。
あなたは実際に何をしようとしていますか?