暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

使用计划任务为动漫公司自动COPY数据

数据中心知识 2022-05-08
44

客户诉求

    有个朋友大学学的是动漫设计专业,对动漫专业非常感兴趣,在校时专业课就学得非常不错,毕业后一心想着施展抱负,想跟几个同学一起开了个动漫公司。在游说他母亲投资成功后,将自己省下来的生活费和压岁钱全部砸了进去,获得20%股份,弄了个总经理头衔。


    电脑自然是我来出谋划策的事情,电脑配置的原则当然是压缩开支,够用就好。有自己电脑的就不配置了,没有电脑的考虑到画图需要,配个中低端的够用就行。然后配置一台高配电脑共享使用,大家将需要渲染的文件都通过网络COPY到这台电脑上,一方面算是备份,更重要的是通过这台电脑进行渲染。这样渲染效率高,还不影响各位的画图进度。


    在人员、设备都完成后,剩下的就是看接业务的事情了。有一天,朋友来告知,接到了一个动画片制作的业务,有人投资做个动画片,现在的人员不足,设备也要添置,还好渲染的工作仍旧可以通过少量机器专门做完,之后再视频拼接就可以了。


解决方案

    接到大单自然是高兴,人员招聘和设备添置的事情忙忙碌碌,不过人数突然增大太多,很多人虽然会画图,不过还是对计算机知识,对网络知识了解太少,人员一个一个入职总不能去一个一个培训吧,那样费时费力还影响运营成本。不培训那一堆问题怎么解决?就算培训了还可能照样会出问题!问题包括两个人使用了相同的文件名造成某一个的工作内容被覆盖;某个人一不小心将其他人的工作内容误删除;不小心将渲染完成的结果弄坏;等等诸如此类的问题。

计划任务调用


    毕竟咱是学计算机的,还是知道计算机领域的两个词语,一个是批处理,一个是计划任务。如果通过计划任务让各自的计算机自动去操作一个指令,就不需要这些设计人员麻烦了。只要这个指令能够满足现有需求就可以了。批处理完全可以做到想要执行的指令效果的。

批处理的名词解释


    那么具体解决方案就出来了:

1、将每台设计人员电脑的计算机名更改为使用人姓名全拼;配置好网络;

2、直接设置好并要求所有设计人员的作图结果都保存在本机固定的目录下面(这个要求对于设计人员来说非常简单);

3、将设计人员分组,每组一台高配机器做渲染。渲染机器共享一个文件夹并设置好用户名和密码。渲染结果指定文件夹,并且每台高配机器配置U盘一个;

4、将自己编写的批处理文件写到设计人员的计划任务中,让批处理每天中午和下午下班前自动执行;作用是将当天的作图结果文件自动COPY到渲染机保存,在COPY的时候直接改名为计算机名+时间+文件名,这样可以一目了然是哪台机器过来的啥时候的文件;

5、将自己编写的批处理文件写到渲染机器的计划任务中,批处理每天夜里执行一次;作用是将渲染后的结果自动保存到U盘并自动更改后缀名称。


批处理的应用

    思路出来了,干活就简单了。更改计算机名、设置共享文件夹这些就不介绍了。设置计划任务的过程,如果有人有兴趣可以留言并关注本公众号,我们可以后期专门写一遍介绍文章。各位有兴趣也可以打开自己电脑现有的计划任务工具,学习一下自己的电脑都会在什么时候自动干啥子事情。这块欢迎留言探讨。


    批处理文件上面提到了两个,目的也不一样,涉及到用户信息及规划,就不贴原图了,下面就大致介绍一下批处理的做法:

@echo off     这个是让批处理中各命令在执行的时候,屏幕不用输出命令行及执行结果

映射一个网络路径,将渲染机器的共享路径映射成本机的O盘。批处理的最后记得将共享文件夹删除,这样设计人员就不会无端删除共享文件了。建立和删除共享文件夹都是使用NET USE命令。

NET USE [devicename | *]  [\\computername\ sharename [\volume] [password | *]]

        [/USER:[domainname\]username]

        [/USER:[dotted domain name\]username]

        [/USER:[username@dotted domain name]

        [/SMARTCARD]

        [/SAVECRED]

        [/REQUIREINTEGRITY]

        [/REQUIREPRIVACY]

        [/WRITETHROUGH]

        [[/DELETE] | [/PERSISTENT:{YES | NO}]]


NET USE {devicename | *} [password | *] HOME


NET USE [/PERSISTENT:{YES | NO}]


共享文件夹只是解决了目标目录的问题,还要解决目标文件名和源文件列表的问题。

设置变量指定源文件所在路径:

set source=C:\Users\DELL\Documents

设置变量指定目标路径:

set dest=O:\

通过循环,复制含存档属性的文件到目标路径,就是一条命令

for /f %%a in ('dir /aa /b %source%') do (echo f|xcopy /y %source%\%a %dest%\%computername%_%date:~0%_%time:~0,2%_%time:~3,2%_%time:~6,2%_%a)

这条命令有点复杂,分解开就容易明白了。

批处理中for循环的应用


首先这是个循环语句,循环要做的事情就是do () 括号里面的事情,循环的条件就是/f %%a in ('dir /aa /b %source%') ,咱们这里的意思就是,执行括号里面的命令,将结果一个一个地赋值给变量%a。那么括号里面的语句同样是个DOS命令,是从上面变量source路径中查找文件,加上/aa的意思是只查找存档文件,/b参数的意思是空格式输出,也就是只输出内容。这个时候我们就一条一条地得到了原路径中包含存档属性的文件名。

条件判断说完了,再看看执行语句吧,执行语句虽然比较长,不过分解起来很容易。首先有个管道命令符 | ,这个跟linux里面一样,代表前后两条都执行。我们这边是为了在后面语句执行后需要提问的时候,直接给出答案f。管道后就是一个普通的文件复制命令:

xcopy /y %source%\%a %dest%\%computername%_%date:~0%_ %time:~0,2%_%time:~3,2%_%time:~6,2%_%a;原来的格式就是简单的【xcopy /y 原文件 目标文件】;此例中源文件因为我们不知道设计员会将文件怎么命名,所以用变量表示,这个变量也已经在搜索命令已经拿到结果了。源文件我们使用了两个变量%source%\%a,也就是我们正常的路径\文件名的格式。目标文件也是一样的格式,路径用变量%dest%表示,文件名我们做了一个改名的操作;刚刚我们已经知道源文件名称是%a,目标文件名称是在前面加上了 计算机名称_当前日期_当前小时_当前分钟_当前秒钟。


关于目标文件名,举例说明就容易理解了,比方说如果源文件名是【picture.psd】,我的电脑计算机名是【MACBOOK】,现在的时间是【2022年5月4日17:30:27】,那么目标文件名就是【MACBOOK_2022-05-04_17_30_27_picture.psd】,之所以表达那么复杂就是因为文件名中不应该有冒号,所以将时分秒分别提取出来并用下划线连接。


好了,总结一下,第一个批处理文件中就这么几行:

@echo off

映射网络路径

设置原路径变量

设置目标路径变量

一条循环语句内包含文件拷贝命令

删除网络路径映射

@echo on


第二个批处理,因为没有网络路径,是从本地硬盘到U盘,那么就去掉两句网络映射的语句,其他也都是一样。


后记

     朋友动漫公司几个月内就快速增加到近百人,我给建议并规划的这个方案一直在使用中,并稳定地发挥着效果。其实计划任务+批处理组合,能够在各个单位完成各种自动化运维的工作,希望广大运维工程师一起来探讨。


感谢各位的阅读,本公众号会持续分享实际的服务案例,若感兴趣请关注该公众号。


需要上门解决问题时,请及时联系我们!

更多案例文章,请点击!


文章转载自数据中心知识,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论