1

テキストファイルにリストされているすべてのフォルダーを見つけて、指定された場所にコピーするためのバッチを探しています。

たとえば、次のようなものがあります。

  1. Textfile.txt ウィット コンテンツ:

    • 01
    • 02
    • 03
    • 04
  2. サブフォルダーを含むヘッド フォルダー。

私が探しているフォルダー (Textfile.txt のフォルダー) は、すべてのサブフォルダーに配置できます。フォルダーを見つけて Textfile.txt から指定した場所にコピーしたい場合。ヘッドフォルダーからすべてのサブフォルダーを検索する必要があります

フォルダ ツリーの例

  1. ホームフォルダー
    • サブフォルダー (11st、12st、13st...)
    • フォルダ (01、02、03、04、)

そのバッチの構築を手伝ってください。ありがとう。

追加情報:

・ホームフォルダー(先頭フォルダー)
  - ジョン (フォルダ)
    - 01 (フォルダー) (フォルダーとファイルなしで空白にすることができます)
      - 11st (フォルダー) (フォルダーとファイルなしで、空白にすることができます)
        - file1.txt (ファイル)
        - file2.xls
      - 12位
      - 13位
    - 02
    - 03
    - 04
  - トーマス
    - 05
      - 11位
      - 12位
      - 13位
    - 06
  - エワ
  - マーティン
    - 07
      - 11位
      - 12位
      - 15日
  - ジョージ
    - 08

空白であっても、Textfile.txt から 01、02、03、04 などのフォルダー全体を見つけてコピーする必要があります。

4

1 に答える 1

0

以下はバッチファイルで機能するはずです:

FOR /F %%F IN (Textfile.txt) DO xcopy /I /E "C:\Source\%%F" "D:\Dest\%%F"

さらにいくつかのスイッチを適用することもできます。

  /C           Continues copying even if errors occur.
  /H           Copies hidden and system files also.
  /R           Overwrites read-only files.
  /Y           Suppresses prompting to confirm you want to overwrite an
               existing destination file.

アップデート

サブフォルダーに散在するフォルダーのリストがある特定のケースでは、このスクリプトは機能するはずです。

@echo off

set SRC_FOLDER="C:\Source"
set DST_FOLDER="C:\Destination"

REM this makes sure that if the first folder in list is empty - it is copied 
IF NOT EXIST %DST_FOLDER% MKDIR %DST_FOLDER%

REM loop through the items in list; use one per line 
REM for group match use <NAME>*
FOR /f %%F IN (%~dp0\Textfile.txt) DO (
   REM loop through all folders
   FOR /f "delims=" %%D IN ('DIR %SRC_FOLDER% /A:D /B') DO (
       REM loop through FOLDER/NAME* sub-folders
       FOR /f "delims=" %%G IN ('DIR %SRC_FOLDER%\"%%D\%%F" /A:D /B') DO (
          IF EXIST %SRC_FOLDER%\"%%D\%%G" XCOPY /I /E %SRC_FOLDER%\"%%D\%%G" %DST_FOLDER%\"%%~nG"
       )
       REM loop through all FOLDER subfolders to catch NAME subfolders 
       FOR /f "delims=" %%G IN ('DIR %SRC_FOLDER%\"%%D" /A:D /B') DO (
          IF "%%G" == "%%F" XCOPY /I /E %SRC_FOLDER%\"%%D\%%G" %DST_FOLDER%\"%%~nG"
       )
   )
)
  • スペースを含むパスの処理を修正するには、「delims=」パラメーターが必要であることに注意してください。enter code here
于 2013-10-26T13:58:26.047 に答える