批处理文件脚本播放目录


FORFILES /p E:test_folderpath /D -2 /S /C "cmd /c echo @isdir @path "|findstr "FALSE"|findstr /v "E:test_folderpathtesttestlog" 

此代码显示所有具有 FALSE 字符串的文件,即使它们的扩展名不同。他们来自不同的目录,他们所有的目录都有一个SC文件夹(成功)。

例如,如果我在命令行上回显路径/文件,这就是输出:

错误 "C:\tester\test\test\test\waedsa.tmp"

我想做的是获取所有这些 FALSE 文件并将它们移动到各自目录上的 SC 文件夹中。

该解决方案比您当前的代码简单得多。不需要 FINDSTR 或管道。我使用查找和替换来测试@path是否包含排除的文件。我还假装文件实际上是一个目录,因此@path..引用文件的父目录。这并不明显,但这有效!

请注意,这将尝试移动已在 SC 文件夹中的文件,但这会失败(一件好事),因为 SC 文件夹没有自己的 SC 文件夹。我将标准重定向到 NULL,因此隐藏了预期的错误消息。

forfiles /p E:test_folderpath /d -2 /s /c "cmd /v:on /c set "file=@path"&if @isdir==FALSE if !file:E:test_folderpathtesttestlog=! neq !file! move /y @path @path..sc >nul 2>nul"


或者您可以使用 FIND(或 FINDSTR)来排除不需要的文件:

forfiles /p E:test_folderpath /d -2 /s /c "cmd /c if @isdir==FALSE echo @path|find /i "E:test_folderpathtesttestlog" >nul || move /y @path @path..sc >nul 2>nul"


如果您知道要排除的文件的确切名称(在本例中称为 log.txt),那么它就更简单了:

forfiles /p E:test_folderpath /d -2 /s /c "cmd /c if @isdir==FALSE if /i @path neq "E:test_folderpathtesttestlog.txt"  move /y @path @path..sc >nul 2>nul"

相关内容

最新更新