我想从DOS命令中移动所有不符合文件名模式的文件。
例如,我想移动所有不以“aaa”开头的文件。
for %i in (*) do if not %i == aaa* move %i .\..
我想从DOS命令中移动所有不符合文件名模式的文件。
例如,我想移动所有不以“aaa”开头的文件。
for %i in (*) do if not %i == aaa* move %i .\..
XCOPY 的设计是基于“排除”列表的... 请参考以下内容:
dir /b /a-d "source"|findstr /b "aaa" >"%temp%\aaafiles.tmp"
xcopy "source" "destination\" /exclude:%temp%\aaafiles.tmp /y
第一行执行了一个source文件夹的DIR(目录)列表,以裸格式(/b)列出文件,忽略目录名(/a-d)。输出被导入到FINDSTR命令中。
FINDSTR查看每个文件名,并将其开头(/b)与字符串"aaa"进行比较。robocopy source destination *.* /mov /XF aaa*.*
有关选项,请参见此处http://technet.microsoft.com/en-us/library/cc733145.aspx
你可以通过创建一个临时文件来列出需要移动的文件列表。然后使用 for
命令将其与文件一起使用。使用 findstr
生成列表。
> dir/b/a-d | findstr /v aaa* > "%temp%\@movelist"
> for /f %f in (%temp%\@movelist) do move %f ...
findstr
,该命令排除与模式匹配的文件名(/v
)并将其放在临时目录下的文件@movelist
中。第二个命令只是获取这些结果,以便您可以随意操作(移动它)。for
命令中调用dir
命令。据我所知,它只接受存在的程序文件,而不是内置命令。attrib +a *.*
attrib -a aaa*.*
xcopy /a [or /m] *.* dest
del /aa /q *.*
在某些情况下,可以使其更加简单。例如,我需要递归地复制一堆目录,但要排除所有图片(png和bmp文件),因此我只需创建一个包含以下内容的excludeList.txt
文件:
.png
.bmp
并运行
xcopy /S /I <source> <dest> /exclude:c:\excludeList.txt
虽然不是最理想的方法,但将所有文件移动到目标位置,然后再将它们移回源位置是一种快速的方式,实际上是进行了移动操作(没有复制)。当然,这假定目标位置中没有与通配符匹配的文件。
move source\*.* destination\ && move destination\aaa*.* source\
/S
(递归显示目录内容)很有用。 - Antonio