0

テキスト ファイルを読み取り、ファイルを含むフォルダーを別のディレクトリにコピーするバッチ ファイルを作成しようとしています。

set dest=f:\Test
for /f %%i in (C:\dirs.txt) do copy "%%i" %dest%

このバッチ ファイルを実行すると、ファイルのみがコピーされます。ファイルを含むフォルダーをコピーしたい。

IE フォルダ\ファイルから宛先\フォルダ\ファイルへ。

4

4 に答える 4

0

Vista以降をお持ちですか?次に、robocopy を試してみますrobocopy "source" "destination" /MIR。その他のオプション:

             使用法 :: ROBOCOPY ソース デスティネーション [ファイル [ファイル]...] [オプション]

             ソース:: ソース ディレクトリ (ドライブ:\パスまたは\\サーバー\共有\パス)。
        宛先 :: 宛先ディレクトリ (ドライブ:\パスまたは\\サーバー\共有\パス)。
               file :: コピーするファイル (名前/ワイルドカード: デフォルトは "*.*")。

::
:: コピー オプション :
::
                 /S :: サブディレクトリをコピーしますが、空のディレクトリはコピーしません。
                 /E :: 空のディレクトリを含むサブディレクトリをコピーします。
             /LEV:n :: ソース ディレクトリ ツリーの上位 n レベルのみをコピーします。

                 /Z :: 再起動可能モードでファイルをコピーします。
                 /B :: バックアップ モードでファイルをコピーします。
                /ZB :: 再起動可能モードを使用します。アクセスが拒否された場合は、バックアップ モードを使用します。

  /COPY:copyflag[s] :: 何をコピーするか (デフォルトは /COPY:DAT)。
                       (copyflags : D=データ、A=属性、T=タイムスタンプ)。
                       (S=セキュリティ=NTFS ACL、O=所有者情報、U=監査情報)。

               /SEC :: SECurity を使用してファイルをコピーします (/COPY:DATS と同等)。
           /COPYALL :: すべてのファイル情報をコピーします (/COPY:DATSOU と同等)。
            /NOCOPY :: ファイル情報をコピーしません (/PURGE で役立ちます)。

             /PURGE :: ソースに存在しなくなった dest ファイル/ディレクトリを削除します。
               /MIR :: ディレクトリ ツリーをミラーリングします (/E と /PURGE に相当)。

               /MOV :: MOVe ファイル (コピー後にソースから削除)。
              /MOVE :: ファイルとディレクトリを移動します (コピー後にソースから削除します)。

       /A+:[RASHNT] :: コピーされたファイルに指定された属性を追加します。
       /A-:[RASHNT] :: コピーされたファイルから指定された属性を削除します。

            /CREATE :: ディレクトリ ツリーと長さ 0 のファイルのみを作成します。
               /FAT :: 8.3 FAT ファイル名のみを使用して宛先ファイルを作成します。
               /FFT :: FAT ファイル時間 (2 秒単位) を想定します。
               /256 :: 非常に長いパス (> 256 文字) のサポートをオフにします。

             /MON:n :: モニターソース; n を超える変更が見られた場合に再度実行します。
             /MOT:m :: 監視ソース; 変更された場合、再実行 m 分 時間。

      /RH:hhmm-hhmm :: Run Hours - 新しいコピーを開始できる時間。
                /PF :: (パスごとではなく) ファイルごとに実行時間をチェックします。

             /IPG:n :: 低速回線の帯域幅を解放するためのパケット間ギャップ (ミリ秒)。


もっと興味深いオプションがあります。

于 2013-05-21T00:35:39.067 に答える
0

ファイルを台無しにする前に、おそらく IE でテストする必要があります。

    @echo off
    CD drive path of parent folder
    mkdir A
    CD ...\A 
    echo hello>1.txt
    echo hello2>2.txt
    mkdir A2
    xcopy A "drive path"
    start explorer.exe "path to A2"

これにより、テスト用の基本的なフォルダー設定が作成されます。その後、動作する場合は、ファイル パスに適用します。

于 2013-10-28T19:48:50.207 に答える
0

上記の解決策は、ディレクトリの内容を宛先のルートにコピーするようです。また、スペースが含まれるフォルダーに問題があります。それを解決するには、以下の行を試してください...

set dest=e:\Test
for /f "delims=" %%i in (folders.txt) do xcopy "%%i\*" "%dest%\%%i\*" /E /F /Y

/E also copies empty subdirectories
/F lists the full filenames to copies (for debugging purposes)
/Y answers questions with yes.

存在しないディレクトリはこのコマンドで作成され、宛先にファイルが存在する場合は上書きされます。

delims= 部分は、テキストファイルから読み取ったディレクトリにスペースを含めることができることを確認します

于 2017-12-06T09:24:16.587 に答える