在 Windows 中对文件列表进行排序

在 Windows 中对文件列表进行排序

Hatton1.jpg获得了从到的彩色照片列表,Hatton72.jpg每张照片都有一张相同的黑白照片,名称Hatton1-2.jpg通过Hatton72-2.jpg

有没有办法将 -2 文件剥离到单独的目录中?

答案1

使用move带有适当参数的命令:

移动 *-2.jpg c:\somefolder

答案2

这有点棘手,因为文件名很短:-

  • 为了与只能处理短文件名的旧程序保持某种兼容性,Windows 为每个较长的文件名提供了一个备用 8.3 名称。
  • 8.3 名称的格式为*~N.???,其中*是文件名的开头,而是N一个整数(很少有冲突) - 请参阅dir /x
  • 不幸的是,搜索*~2.*会找到一些短名称以及带有*~2.*长名称的所需文件。

在 中cmd,转到包含文件的目录:您可以列出要移动的文件:

dir /b | findstr "~2.jpg"

理想情况下,您应该能够使用:

for /f %f in ('dir /b | findstr "~2.jpg"') do move "%f" NewDirPath

不幸的是,您不能在循环中的嵌入命令中使用管道for,因此您需要使用两个命令(或三个命令来删除临时文件):

dir /b > Files.lst
for /f %f in ('findstr "~2.jpg" Files.txt') do move "%f" NewDirPath
del Files.lst

这不是一个非常优雅的解决方案,但你可能只需要做一次。如果你需要重复执行此操作,请将命令放入批处理文件中,并确保将%循环变量加倍:

...
for /f %%f in ('findstr "~2.jpg" Files.txt') do move "%%f" NewDirPath
...

答案3

使用 PowerShell 您可以使用Get-ChildItem和...一起Move-item

它看起来像这样:

Get-ChildItem -Filter '*-2.jpg' -Recurse | %{Move-Item $_ C:\Target}

我没有测试该代码,但它应该非常相似。仅使用常规 Windows 搜索并拖动文件也可能有效。

相关内容