2017-02-02 3 views
0

すべてのサブフォルダをループするバッチスクリプトを作成し、すべてのサブフォルダに1つのテキストファイルを作成しようとしています。そのテキストファイルのファイル名は、サブフォルダの名前にする必要があります。すべてのサブフォルダをループして1つのtxtファイルを作成

フォルダ/ folder1の/ folder1.txt

フォルダ2 /フォルダ2/folder2.txt

私はこれを試してみたが、TXTファイルは、サブフォルダ内に作成されていないが、メインフォルダにあります。

set startdir="C:\Users\abc\folder" 
FOR /F %%a in ('dir /AD /B /S "%startdir%" ') do (
cd %%a 
echo %%a >%%a.txt 
) 

どこが間違っていましたか?どのように私はこれを行うことができます任意のアイデア。私はこのバッチのために私は愚かな質問をした場合はごめんなさい。

答えて

0
set "startdir=C:\Users\abc\folder" 
for /d /r "%startDir%" %%a in (*) do >"%%~fa\%%~nxa.txt" echo(%%~nxa 

再帰的ディレクトリのフルパスの内部に配置され、各ディレクトリ(/d)ディレクトリの名前と.txt拡張子(%%~nxa.txt)のファイルに書き込むための指示フォルダ(/r "%startDir%")下(%%~fa

ノートがあれば、許可されたオプション

の完全なリストについては、for /?の出力を読んだり、 for /fが必要です(例:隠しフォルダ)

set "startdir=C:\Users\abc\folder" 
for /f "delims=" %%a in (' 
    dir /s /b /ad "%startDir%" 2^> nul 
') do >"%%~fa\%%~nxa.txt" echo(%%~nxa 

はコメントに適応するを編集しました。アクティブディレクトリを処理中のディレクトリに変更する必要がある場合は、

set "startdir=C:\Users\abc\folder" 
for /d /r "%startDir%" %%a in (*) do (
    rem Change to the folder being processed 
    pushd "%%~fa" 

    rem do whatever is needed 
    > "%%~nxa.txt" echo echo(%%~nxa 
    echo .... 
    echo .... 

    rem And before the iteration ends, restore 
    rem previous active directory 
    popd 
) 
+0

答えていただきありがとうございます。あなたが気にしないなら別の質問があります。私はすべてのサブフォルダをループすることができますし、そのサブフォルダに作業ディレクトリを変更し、何かを次のフォルダに変更します。 CDを試したのと同じように私は期待通りに動作しません。 – darkD

+0

@ darkD、回答が更新されました。アクティブディレクトリを変更することはできますが、各反復が終了する前に以前のものを復元する必要があります。 –

関連する問題