2017-02-22 60 views
-1

xcopyから除外したい拡張機能はほとんどありません。私はそれらが存在する可能性のあるフォルダ/ディレクトリを知りません。この上xcopyで複数のファイル拡張子を除外

xcopy /r /d /i /s /y C:\test1 C:\test2 /exclude:.txt+.exe 

アンの助けを:以下

は、私が使用しているコマンドですか?しかし、xcopy/EXCLUDEオプションが非常に貧弱である

.txt 
.exe 

xcopy /R /D /I /S /Y /EXCLUDE:exclude.txt "C:\test1" "C:\test2" 

一緒exclude.txtの次の内容を含む:あなたが探していることはこれです

+3

'だけ除外するための要素のリストを読み込むところからファイルを受け入れるスイッチを除外xcopy'。ファイルを作成するか 'robocopy'と'/xf'スイッチを使います –

+0

優秀..!完璧に動作します。助けてくれてありがとう..! – user2817712

+3

'xcopy'の'/EXCLUDE'オプションはあなたが望むものを実際には行なわず、 '.txt'と' .exe'拡張子を持つファイルを除外せず、完全パスに '.txt'または任意の位置で '.exe';たとえば、ソースファイル 'C:\ test1 \ my.txt.files \ file.ext'がある場合、それも除外されます... – aschipfl

答えて

3

。実際には、指定された拡張子を持つファイルを除外するわけではありません。フルパスに.txtまたは.exeが含まれているすべての項目を除外します。ソースファイルC:\test1\my.txt.files\file.extがあると仮定すると、それも除外されます。


私がお見せしたいそのうちのいくつかは、これを克服するには、いくつかの方法があります:

  1. robocopy commandとその/XFオプションを使用します。

    robocopy "C:\test1" "C:\test2" /S /XO /XF "*.txt" "*.exe" 
    
  2. を作成for /F loopxcopy /Lと一緒に使用して、ファイルを事前フィルタリングします。

    set /A "COUNT=0" 
    for /F "delims=" %%F in (' 
        rem/ // List files that would be copied without `/L`; remove summary line: ^&^
         xcopy /L /R /D /I /S /Y "C:\test1" "C:\test2" ^| find ".\" 
    ') do (
        rem // Check file extension of each file: 
        if /I not "%%~xF"==".txt" if /I not "%~xF"==".exe" (
         rem // Create destination directory, hide potential error messages: 
         2> nul mkdir "C:\test2\%%~F\.." 
         rem // Actually copy file, hide summary line: 
         > nul copy /Y "C:\test1\%%~F" "C:\test2\%%~F" && (
          rem // Return currently copied file: 
          set /A "COUNT+=1" & echo(%%~F 
         ) || (
          rem // Return message in case an error occurred: 
          >&2 echo ERROR: could not copy "%%~F"! 
         ) 
        ) 
    ) 
    echo   %COUNT% file^(s^) copied. 
    
関連する問題