根据文件的扩展名将文件移动到适当的位置
我有一个清理脚本,可以根据文件的扩展名将文件移动到适当的预设位置。
例如,扩展名为 .xls 的文件将被移动到 ~\XLS 文件夹,.sql 会被移动到 ~\SQL 文件夹,依此类推。这是我的脚本。
$dirtyfolder = "\\server\c$\Documents and Settings\user\Desktop\"
$org = "\\BACKUPS\users\"
dir $dirtyfolder -fil *.doc | mv -dest "$($org)ORG\doc"
dir $dirtyfolder -fil *.txt | mv -dest "$($org)ORG\txt"
dir $dirtyfolder -fil *.sql | mv -dest "$($org)ORG\sql"
dir $dirtyfolder -fil *.log | mv -dest "$($org)ORG\log"
dir $dirtyfolder -fil *.zip | mv -dest "$($org)ORG\zip"
dir $dirtyfolder -fil *.7z | mv -dest "$($org)ORG\zip"
dir $dirtyfolder -fil *.png | mv -dest "$($org)ORG\img"
dir $dirtyfolder -fil *.jpg | mv -dest "$($org)ORG\img"
dir $dirtyfolder -fil *.mp3 | mv -dest "$($org)ORG\mp3"
我完全意识到这是以一种不优雅的方式来实现我的目标。所以我想知道如何修改脚本,以便
- 重用重复代码
- 在目标文件夹不存在(应该创建它)的情况下
- 。将相似的扩展名分组,例如 png 和 jpg
I have a cleanup script that moves files based on their extension to appropriate preset locations.
For example, a file with the extension .xls will be moved to ~\XLS folder, .sql to ~\SQL and so on. Here is the my script.
$dirtyfolder = "\\server\c$\Documents and Settings\user\Desktop\"
$org = "\\BACKUPS\users\"
dir $dirtyfolder -fil *.doc | mv -dest "$($org)ORG\doc"
dir $dirtyfolder -fil *.txt | mv -dest "$($org)ORG\txt"
dir $dirtyfolder -fil *.sql | mv -dest "$($org)ORG\sql"
dir $dirtyfolder -fil *.log | mv -dest "$($org)ORG\log"
dir $dirtyfolder -fil *.zip | mv -dest "$($org)ORG\zip"
dir $dirtyfolder -fil *.7z | mv -dest "$($org)ORG\zip"
dir $dirtyfolder -fil *.png | mv -dest "$($org)ORG\img"
dir $dirtyfolder -fil *.jpg | mv -dest "$($org)ORG\img"
dir $dirtyfolder -fil *.mp3 | mv -dest "$($org)ORG\mp3"
I am fully aware that this in an inelegant way to achieve my objective. So I would like to know how I can modify the script so that I can
- reuse repetitive code
- if the destination folder does not exist, it should be created.
- group similar extensions, like png and jpg
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
已测试。不管理分组的(非递归)解决方案:
具有分组的解决方案:
其中
get-destbytype
是以下函数:Tested. A (not-recursive) solution that does not manage grouping:
Solution with grouping:
where
get-destbytype
is the following function:这是我的工作测试
该脚本将在源文件夹中找到所有不同的扩展名。对于每个扩展,如果目标中尚不存在该文件夹,则会创建该文件夹。
最后一行将从源循环每个文件并将其移动到正确的子文件夹目标。
如果您想将具有不同扩展名的图像放在同一文件夹中,您需要使用 if 或 switch 语句进行进一步检查。
This is my working test
The script will find all different extensions within source folder. For each extension, if the folder doesn't already exist within destination, it will be created.
Last row will loop each file from source and move it to the right subfolder destination.
If you want to put images with different extensions within the same folder you need to make some further check, using an if or a switch statement.