我想将文件从一个目录移动到另一个目录,而不是* .log文件。 我已经尝试过XCOPY,因为它有一个EXCLUDE开关,但它不会复制,文件仍然保留为源文件夹。使用批处理文件移动* .log除外的文件
回答
你也许可以这样做:
mv | grep -v *.log | ./* /path
要测试,如果你将要移动你可以做一个“LS”和管道,为给“grep”缺少了正确的文件“MV”
没错,但我认为问题的作者希望在MS-DOS中有相同的命令环境,这意味着带有批处理文件命令的* .bat或* .cmd文件。 – UltraCommit 2011-06-14 14:01:30
http://www.pcreview.co.uk/forums/use-exclude-option-xcopy-t1469487.html
在上一个超链接,我可以与相关复读以下问题:
问题:
嗨,
我在下面使用xcopy命令,但它不会做我想要的。相反,它 抱怨“无法读取文件:.obj”然后停止。 xcopy c:\ t1 c:\ t2 /EXCLUDE:.obj
我希望复制过程中跳过所有.obj文件。有人能帮我吗? 谢谢。托尼
答:
的/排除指令指定包含的 文件名字符串来排除的文件列表。例如,要做你想做的事情,你需要创建一个文件,假设我们称之为MyExcludes.txt。在这个文件中, 只有一个filespec - “.obj”(不包括引号)。
然后更改命令以这样的:
XCOPY C:\ T1 C:\ T2 /EXCLUDE:MyExcludes.txt
===>这是一个部分解决方案,因为你复制所有,但。 obj文件,但不要将它们从源文件中删除。您可以尝试将XCOPY的输出重定向到文件,然后手动将DELETE添加到由XCOPY命令写入的文件的每一行。最后,您执行该文件以删除源文件。
yup如果没有别的,那么可以做到这一点,但由于要移动的文件数量会非常高,所以看看是否有任何选项来移动它们,而不是2个周期:复制并写入文件,然后删除他们。 – 2011-06-14 14:41:50
为了让您一开始,试试这个蝙蝠
for %%a in (%1\*) do (
if /I not "%%~xa"==".log" (
ECHO move /Y %%~fa %2\%%~nxa
)
)
经过仔细的检查,删除ECHO
命令。
有关更多信息,请参阅HELP FOR
,HELP IF
以及用于从文件名中提取扩展名的语法,请参阅HELP CALL
。
“经过认真测试,删除ECHO命令。” - 有史以来最好的建议。 – peterchen 2012-07-03 07:54:59
如果你可以使用ROBOCOPY,试试这个:
ROBOCOPY C:\Source C:\Dest * /MOV /XF *.LOG
没有ROBOCOPY,你可以在批量关闭。这将采用传递的通配符,在其上运行dir,然后删除以.log结尾的目录列表中的条目。然后它会调用每一个移动。由于我们要逐个移动每个文件,因此我们需要确保目标存在并且是一个文件夹 - 否则移动可能会将其解释为移动并重命名。
请注意,如果您专门为其传递单个文件夹名称,则dir返回的内容可能不是您所期望的。不过,所有通配符都应该可以正常工作。
@if ("%~1") == ("") goto usage
@if ("%~2") == ("") goto usage
@if not ("%~3") == ("") goto usage
@if not exist "%~2" mkdir "%~2"
@dir /a:d "%~2" >nul 2>nul
@if %errorlevel% neq 0 echo Directory %2 cannot be created or a file with that name already exists in that location. && exit /b 1
@for /f "delims=" %%a in ('dir /b "%~1" 2^>nul ^| findstr /e /i /v ".log"') do @move /y "%%a" "%~2" >nul && echo %%a
@goto :eof
:usage
@echo movewithoutlog.bat
@echo Moves a set of files, omitting any with .log extension.
@echo Usage: movewithoutlog.bat files destination
@echo e.g. movewithoutlog.bat *.* ..\newdestination
@exit /b 1
- 1. 使用批处理脚本在文件名中移动文件
- 2. 自动移动批处理文件
- 3. 按批改日期移动文件的批处理文件
- 4. 意外使用(批处理文件
- 5. 用于文件移动的dos批处理文件
- 6. 批处理文件删除文件夹
- 7. 使用批处理文件
- 8. 使用批处理文件
- 9. 使用批处理文件启动hostednetwork
- 10. 根据名称移动文件的批处理文件
- 11. 使用批处理文件删除大于90天的文件
- 12. 使用批处理文件在名称中使用空格移动文件
- 13. FTP批处理文件移动远程文件
- 14. 批处理文件移动.txt到另一个文件夹
- 15. DOS批处理文件每10分钟移动2000个文件
- 16. 批处理脚本移动压缩和删除文件
- 17. 使用批处理删除文件和文件夹
- 18. 如何使用批处理文件删除文件
- 19. 使用批处理文件删除和复制文件
- 20. 使用批处理文件查找并删除资源文件
- 21. 使用批处理文件删除一些文件
- 22. 批处理文件 - 删除文件只有在另外的文件存在
- 23. 如何从批处理文件中调用批处理文件?
- 24. 使用批处理脚本逐行解析文本文件(批处理文件)
- 25. 删除批处理文件夹中的文件和文件夹
- 26. 批处理文件删除文件夹中的文件
- 27. 批处理:使用查找文件搜索目录树并移动文件
- 28. 批处理文件删除除指定列表以外的所有文件夹
- 29. 批处理将文件夹中的文件移动到另一个文件夹?
- 30. 批处理文件“”
最安全(最简单)的方法是使用XCOPY然后DEL旧文件。我个人不喜欢“移动”,就好像在移动命令(文件损坏等)期间发生的事情一样,您永久丢失了该文件。我听说过一些情况,在运行这个命令的时候人们已经停电,并且还丢失了丢失的文件o.0 – Mechaflash 2011-06-17 19:35:43