我试图从没有扩展,操作.bz2最终所有子目录移动文件: 批次:将文件扩展名,如果不是(操作.bz2)
应该移到哪AREN所有分机“T与(操作.bz2)我想这个结局:
for /R C:\AppServ\fastdl %f in (*) do @if not exist (*.bz2) move /Y * C:\AppServ\fastdl\not_bzip >NUL
如果我把%F的不是移动/ Y *它会移动e .bz2文件。
我试图从没有扩展,操作.bz2最终所有子目录移动文件: 批次:将文件扩展名,如果不是(操作.bz2)
应该移到哪AREN所有分机“T与(操作.bz2)我想这个结局:
for /R C:\AppServ\fastdl %f in (*) do @if not exist (*.bz2) move /Y * C:\AppServ\fastdl\not_bzip >NUL
如果我把%F的不是移动/ Y *它会移动e .bz2文件。
你可能想是这样的:
For /R "C:\AppServ\fastdl" %f In (*) Do @If %~xf NEq .bz2 (@Move /Y "%~f" "C:\AppSrv\not_bzip">Nul)
请注意,我改变了移动到目录中,则需要先创建它自己,并确保它比文件夹树的子目录之外的某个地方你正在扫描。
For /f "delims=" %A in ('dir /b /s "c:\windows\syswow64" ^| Findstr /v /I /c:".dll"') Do Echo %A
列出除dll文件以外的所有文件。
实际上,搜索字符串应该是'.dll $'以将匹配锚定到文件名的末尾;否则,像'this.is.not.a.dll.file.txt'这样的东西会错误匹配... – aschipfl
谢谢你,救了我的一天! – Mike
操作'for'('/ R')循环内的目录(树)非常危险 - 请参阅此问题:[for或for/)?(http://stackoverflow.com/q/31975093)在('dir/B/S“C:\ AppServ \ fastdl \ *”')中使用'for/F“delims =”%F ..)'(类似于[Noodles'answer](http://stackoverflow.com/a/39761641))确保目录树在被操作之前被枚举*。顺便说一句,你应该使用'if'%〜xf“NEQ”.bz2“'引号来避免文件没有扩展名时遇到的麻烦...... – aschipfl
我认为危险这个词有点过于戏剧化,它们正在移动文件,而不是删除它们。我明白这种方法会造成衰落,但是在整个运行脚本中动态改变树的可能性真的很大。对于没有扩展名的文件的可能性也可以这么说,但是当OP在他们的文章中提供了一个快速样本时,这种可能性不大可能不大。即使使用dir命令,我仍然更愿意规定** - d **和** - s -h **,绕过系统和隐藏文件。它足够强大以供一般使用,而不是全部使用。 – Compo