4

テスト目的で、いくつかのファイルを含む再帰的なディレクトリが必要です。これは最大パス長になります。

作成に使用されるスクリプトは、次のように 2 つの for ループのみで構成されます。

for /L %%a in (1 1 255) do @(
    mkdir %%a
    && cd %%a
    && for /L %%b in (1 1 %random%) do @(
            echo %%b >> %%a.txt
        )
)

このスクリプトを別のスクリプトの一部として埋め込みたいのですが、さらに多くのことを行う必要がありますが、その周りに他のコマンドを追加できないか、動作を拒否します。これが役立つ場合は、Windows Vistaでこれを使用します。

"@ECHO OFF最初の行に " を書きecho done、最後の行に " " を書いても機能しません。

コマンドラインの出力は次のとおりです。

X:\Scripte>recursive.cmd
OFFfor /L %a in (1 1 255) do @( mkdir %a
The system cannot find the path specified.

編集: レイヤー 8 に問題があるようです。問題は使用されているコマンド シェルにあるようです。裸の cmd.exe を使用すると動作しますが、上記のように Visual Studio 2008 コマンド シェルでは動作しません。

とにかくありがとうございました。

4

2 に答える 2

2

回答の下に小さなコメントを追加する方法がわからないので、ここで行います。

左括弧の前の @ 記号は、エコーがまだオフになっていない場合にのみ必要です。その場合、@ 記号がないと、FOR ループ内のすべてのコマンドがエコーされます。

そして、そうです、&& が必要な理由は、テキスト エディターがすべてを 1 行にまとめているからです。しかし、誰も解決策を投稿しませんでした。コピーしてメモ帳に貼り付け、必要に応じて行を区切ってください。

于 2012-03-09T14:21:12.560 に答える
1

括弧の前の「@」や for ループ本体内の「&&」は必要ないと思います。かっこは、for ループ内の複数のステートメントの処理を処理します。

以下は私にとってはうまくいきます:

@echo OFF

for /L %%a in (1 1 255) do (
    @echo a = %%a
    mkdir %%a
    cd %%a
    for /L %%b in (1 1 %random%) do (
        echo %%b >> %%a.txt
    )
)

@echo done
于 2008-12-11T12:11:45.887 に答える