xcopy中的/ exclude仅用于文件类型

Mat*_*ell 64 xcopy batch-file

我有一个批处理文件,可以将文件从Visual Studio复制到我的Web文件夹.我想复制我的web项目中的所有文件,除了*.cs文件外.我似乎无法让这个工作:

xcopy /r /d /i /s /y /exclude:".cs" C:\dev\apan C:\web\apan
Run Code Online (Sandbox Code Playgroud)

有小费吗?当我尝试运行它时,我只得到退出代码4.

Dea*_*lor 117

/EXCLUDE:参数需要一个包含已排除文件列表的文件.

所以创建一个名为excludedfileslist.txt包含的文件:

.cs\
Run Code Online (Sandbox Code Playgroud)

那么这样的命令:

xcopy /r /d /i /s /y /exclude:excludedfileslist.txt C:\dev\apan C:\web\apan
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用Robocopy,但需要安装/复制robocopy.exe到机器.

更新

一个匿名评论编辑,简单地说"此解决方案也排除了css文件!"

这是真的创建一个excludedfileslist.txt文件只包含:

.cs
Run Code Online (Sandbox Code Playgroud)

(注意结尾没有反斜杠)

还将排除以下所有内容:

  • file1.cs
  • file2.css
  • dir1.cs\file3.txt
  • dir2\anyfile.cs.something.txt

有时人们不会阅读或理解XCOPY命令的帮助,这里有一个我想强调的项目:

使用/排除

  • 在每个文件的单独行中列出每个字符串.如果列出的任何字符串与要复制的文件的绝对路径的任何部分匹配,则该文件将从复制过程中排除.例如,如果指定字符串"\ Obj \",则排除Obj目录下的所有文件.如果指定字符串".obj",则排除扩展名为.obj的所有文件.

如示例所示,它排除了"具有.obj扩展名的所有文件",但它没有声明它也排除了名为file1.obj.tmp或的文件或目录dir.obj.output\example2.txt.

还有一种方法.css可以排除文件,更改excludedfileslist.txt文件只包含:

.cs\
Run Code Online (Sandbox Code Playgroud)

(注意结尾的反斜杠).

这是一个完整的测试序列供您参考:

C:\test1>ver

Microsoft Windows [Version 6.1.7601]

C:\test1>md src
C:\test1>md dst
C:\test1>md src\dir1
C:\test1>md src\dir2.cs
C:\test1>echo "file contents" > src\file1.cs
C:\test1>echo "file contents" > src\file2.css
C:\test1>echo "file contents" > src\dir1\file3.txt
C:\test1>echo "file contents" > src\dir1\file4.cs.txt
C:\test1>echo "file contents" > src\dir2.cs\file5.txt

C:\test1>xcopy /r /i /s /y .\src .\dst
.\src\file1.cs
.\src\file2.css
.\src\dir1\file3.txt
.\src\dir1\file4.cs.txt
.\src\dir2.cs\file5.txt
5 File(s) copied

C:\test1>echo .cs > excludedfileslist.txt
C:\test1>xcopy /r /i /s /y /exclude:excludedfileslist.txt .\src .\dst
.\src\dir1\file3.txt
1 File(s) copied

C:\test1>echo .cs\ > excludedfileslist.txt
C:\test1>xcopy /r /i /s /y /exclude:excludedfileslist.txt .\src .\dst
.\src\file2.css
.\src\dir1\file3.txt
.\src\dir1\file4.cs.txt
3 File(s) copied
Run Code Online (Sandbox Code Playgroud)

此测试在Windows 7命令行上完成,并在Windows 10"10.0.14393"上重新测试.

请注意,最后一个示例确实排除.\src\dir2.cs\file5.txt了您可能意外的意外情况.

  • 好,我知道了!我可以在批处理文件的开头创建文件:echo .cs> C:\nocs.txt (8认同)
  • 请注意,要准确生成 Dean Taylor 的内容(尤其是反斜杠),您可以这样做: echo .cs\ > exceptedfileslist.txt 现在也不鼓励直接写入 C:\,因此如果相对路径不理想(对我来说),您可以尝试 echo .cs\ > %USERPROFILE%\excludedfileslist.txt 并稍后引用相同的内容 (2认同)
  • 嗯,如果有空格,我会忽略引号来处理空格:echo .cs \>“%USERPROFILE%\ excludedfileslist.txt” (2认同)

小智 7

在我的情况下,我必须从第二行开始一个排除扩展名列表,因为xcopy忽略了第一行.

  • 我刚刚有了这个,将排除文本文件的第一行留空就是答案-有人知道为什么第一行必须留空吗? (2认同)

小智 5

在excludefileslist.txt中将*.cs更改为.cs