サブフォルダーを作成したり、既存のサブフォルダーの名前を変更したりするためのバッチ ファイルを作成できますか?

サブフォルダーを作成したり、既存のサブフォルダーの名前を変更したりするためのバッチ ファイルを作成できますか?

コーディングの知識はほとんどありません。そのため、バッチ ファイルを作成してこれを実行できるかどうかはわかりません。

ちなみに私はWindows 10を使用しています。

私は「クライアント」フォルダの大きなデータベースを持っています。おそらくこれが親フォルダでしょう。そうでなければ...。各クライアント名の最初の文字であるアルファベットの各文字ごとにサブフォルダがあります。つまり、

C:クライアント/A/アダムス、ビル

C:クライアント/A/アンダーソン、ジル

C:クライアント/B/バーガンディ、ジャック

...などなど。クライアントは何千人もいます。

各クライアントフォルダ(adams、billなど)の下に、ID&PFPというサブフォルダを作成する必要があります。

すべての文字付きサブフォルダーと、その中の後続のクライアント サブフォルダーを自動的に調べて、すべてのクライアント名内に「ID および PFP」サブフォルダーを作成するバッチを作成できるでしょうか?

さらに、上記のサブフォルダーの一部には、すでに「ID」というフォルダーがあります。「ID」というフォルダーがない場合に、クライアント名フォルダー内にそれらのサブフォルダーを作成するように指示するコードはありますか。「ID」というフォルダーがある場合は、名前を「ID & PFP」に変更しますか。

よろしくお願いいたします

答え1

必要なのは次のバッチです。
編集: サブフォルダ「ID」ケースを追加しました

@echo off
setlocal
  for /f  %%b in ('dir /b /a:d') do (
      rem enter the directory
      pushd %%b
      echo In Directory: %%b

    for /f  %%c in ('dir /b /a:d') do (
      rem enter the directory
      pushd %%c
      echo In Directory: %%c

      IF EXIST ID (
        rem Folder "ID" does exist 
        echo Folder "ID" Renamed to "ID & PFP"
        rename "ID"  "ID & PFP"
        ) ELSE (
        rem Folder "ID" does not exist
        rem create folder
        md "ID & PFP"
        echo Folder: "ID & PFP" created
      )


      rem leave the directory
      popd
     )
      rem leave the directory
      popd
  )
  pause >nul
endlocal

これをバッチ ファイルに入れて、フォルダー a、b、c などがある親フォルダーに配置します。

基本的に、このスクリプトは、それが存在するすべてのサブフォルダーに移動し、その下のすべてのサブフォルダーに移動してフォルダーを作成します。

In Directory: test
In Directory: child
Folder "ID" Renamed to "ID & PFP"
In Directory: child1
Folder: "ID & PFP" created
In Directory: child2
Folder: "ID & PFP" created
In Directory: test1
In Directory: child
Folder: "ID & PFP" created
In Directory: test2
In Directory: child
Ein Unterverzeichnis oder eine Datei mit dem Namen "ID & PFP" existiert bereits.
Folder: "ID & PFP" created

答え2

さて、次のコードはあなたが求めていることすべてを実行します。お気軽に「.txt」エディター内にコピーし、「.bat」拡張子で保存してください(例:「dirHelper.bat」)。

2行目を「CD C:\ルート「あなたのケースに該当するものに - 」CD C:\クライアント「echo」ステートメントは、テスト中に何が起こっているか理解しやすくするため、または実行時にログを記録するために追加しただけなので、自由に削除してください。

@Echo Off
CD C:\root 
echo entered %cd% directory
FOR /D %%G in ("*") DO (
    CD %%G 
    echo entered %cd%\%%G directory
    FOR /D %%N in ("*") DO (
        cd %%N
        echo entered %cd%\%%G\%%N directory
        if EXIST ID (
            rename ID "ID & PFP"
            echo Found ID folder inside %cd%\%%G\%%N
            echo ID folder renamed to "ID & PFP"
            CD ..\
        ) else (
            if EXIST "ID & PFP" (
                echo "ID & PFP folder already exist here:" %cd%\%%G\%%N
                CD ..\
            ) else (
                md "ID & PFP"
                echo created "ID & PFP" folder inside %cd%\%%G\%%N directory
                CD ..\

                )
        )
    )
    CD ..\
)
PAUSE

関連情報