sorting - 在批处理文件中按文件类型将文件 move 到不同目录(Win)

标签 sorting batch-file cmd move xcopy

基本上我想做的是使用批处理文件对我的下载文件夹进行排序。我需要知道如何使批处理文件覆盖重复文件或在文件名末尾创建“(1)”。 我正在将任何带有 .jpeg、jpg 等的文件 move 到我的图片文件夹等。 我目前有这个,

@ECHO OFF
mkdir %USERPROFILE%\Downloads\EXEs
mkdir %USERPROFILE%\Downloads\Jars
mkdir %USERPROFILE%\Downloads\zips
mkdir %USERPROFILE%\Downloads\Crafts
mkdir %USERPROFILE%\Documents
mkdir %USERPROFILE%\Downloads\ISO's
mkdir %USERPROFILE%\Pictures
mkdir %USERPROFILE%\Downloads\Torrent
mkdir %USERPROFILE%\Music
mkdir %USERPROFILE%\Videos
mkdir %USERPROFILE%\Contacts


move %CD%\*.exe %USERPROFILE%\Downloads\EXEs 
move %CD%\*.jar %USERPROFILE%\Downloads\Jars
move %CD%\*.zip %USERPROFILE%\Downloads\zips
move %CD%\*.rar %USERPROFILE%\Downloads\zips
move %CD%\*.gz %USERPROFILE%\Downloads\zips
move %CD%\*.7z %USERPROFILE%\Downloads\zips
move %CD%\*.tar.gz %USERPROFILE%\Downloads\zips
move %CD%\*.craft %USERPROFILE%\Downloads\Crafts
move %CD%\*.pdf %USERPROFILE%\Documents
move %CD%\*.doc %USERPROFILE%\Documents
move %CD%\*.docx %USERPROFILE%\Documents
move %CD%\*.csv %USERPROFILE%\Documents
move %CD%\*.txt %USERPROFILE%\Documents
move %CD%\*.iso %USERPROFILE%\Downloads\ISO's
move %CD%\*.img %USERPROFILE%\Downloads\ISO's
move %CD%\*.jpg %USERPROFILE%\Pictures
move %CD%\*.jpeg %USERPROFILE%\Pictures
move %CD%\*.png %USERPROFILE%\Pictures
move %CD%\*.bmp %USERPROFILE%\Pictures
move %CD%\*.Torrent %USERPROFILE%\Downloads\Torrent
move %CD%\*.m3u %USERPROFILE%\Music
move %CD%\*.mp4 %USERPROFILE%\Videos
move %CD%\*.vcf %USERPROFILE%\Contacts
echo Sort Completed.
pause

虽然这在很大程度上可以完成工作。我还剩下一些文件和大约 12 条错误消息,

A duplicate file name exists, or the file cannot be found.

A duplicate file name exists, or the file cannot be found.

A duplicate file name exists, or the file cannot be found.

我相当确定这些消息中的大多数都是程序找不到“*.exe”之类的。然而,有些来自应 move 的剩余文件。 我尝试了很多谷歌搜索,发现了比我需要的更复杂的事情。 抱歉,如果还有类似的帖子,我找不到。 感谢您抽出时间。

最佳答案

如果 move *.ext ... 找不到扩展名为 .ext 的文件,则可能会发生错误。你可以

if exist *.ext move *.ext ...

或者只是将错误消息重定向到涅槃:

2>nul move *.ext ...

如果您确实想覆盖目标中的任何现有文件:move 有一个 /y 参数,它正是这样做的。 (尽管 move/? 建议,move 在从批处理文件运行时默认会执行此操作)

对于其余文件,我建议在批处理文件末尾添加另一行(当所有其他文件都已 move 时):

2>nul move *.* %USERPROFILE%\Other

关于sorting - 在批处理文件中按文件类型将文件 move 到不同目录(Win),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36781886/

相关文章:

c - Qsort比较函数

security - 尝试复制文件 Windows Vista 时访问被拒绝

java - 为什么.bat中编写的命令在java中无限运行?

batch-file - 如何使用 "where"命令并将结果回显到 .txt 文件并将相同的 .txt 文件设置为变量

windows - 使用参数从 PowerShell 启动批处理文件

html - 是否有 DRY 的 Flex 订购方式?

django - 按显示名称而不是实际值排序

PHP删除数组的第一个索引并重新索引

javascript - Dojo 构建如何缩小用 ECMASCRIPT5 编写的代码?

c# - 如何写入 "*.bat"文件?