‘壹’ 如何写一个文件自动复制的脚本
你可以先在主机上将要拷入的机器的共享文件夹建一个磁盘影射,然后建个文本文件,写入内容: (源文件地址)空格(要考入的地址) 保存退出后,将文本文件改称.bat的文件,在计划任务中执行就可以了
例:
c:\winnt\explorer.exe h:\winnt\explorer.exe
‘贰’ 在bat脚本中实现复制文件
bat 是批处理文件,主要用于 DOS 和 Windows 操作系统中。
.bat 文件的内容,是由一系列命令构成,每一行通常是一条命令,这些命令是以字符的形式,通过命令解释器进行执行(与 Windows 常见的鼠标点击运行不同)。
复制文件的最常用的命令是: 。相关的资料如下:
COPY [/D[1] ] [/V] [/N] [/Y | /-Y] [/Z] [/A | /B ] source [/A | /B]
[+ source [/A | /B] [+ ...]] [destination [/A | /B]]
各参数代表的含义:
source 指定要复制的文件。
/A 表示一个 ASCII 文本文件。
/B 表示一个二进位文件。/D 允许解密要创建的目标文件
destination 为新文件指定目录和/或文件名。
/V 验证新文件写入是否正确。
/N 复制带有非 8dot3 名称的文件时,
尽可能使用短文件名。
/Y 不使用确认是否要覆盖现有目标文件的提示。
/-Y 使用确认是否要覆盖现有目标文件的提示。
示例:
将 D:\目录\ 下的所有 txt 文件,复制到 D:\目标目录 下。
D:\目录\*.txt D:\目标目录
‘叁’ 利用Windows 计划任务定时将本地文件复制到共享文件夹
有时候,我们会遇到需要将本地文件定时复制到远程主机的情况。解决这个问题的思路是:
1、编写复制文件脚本
2、利用Windows计划任务定时执行脚本
逻辑是简单的清楚的,但是在实际操作过程中,却可能有团虚侍很多细节。
脚本塌吵内容:
net use \\net_host_ip_address\ipc$ password/user:username
x /e /H "C:\backup" "\\10.144.129.17\share_dir\"
说明:
与本地cop不一样,网络之间的需要使用到用户名和密码,所以脚本的第一句是指定网络主机的几个参数:
net_host_ip_address:提供共享目录的主机的ip地址(或者主机名)
password:能够访问共享目录的用户名
username:访问共享目录的用户名
#第二行比较简单,
/e和/h都是x提供的参数,"C:\backup"是要拷贝的文件夹(x比较恶心人的是,并不能将根目录一起复制,只能复制目录下面的所有文件,
比如本次目录,要想连同backup一起拷贝,除非在backup上面还有一层目录)。最后一段就是网络位置
设置定时誉升任务:
这里需要说明的是:
因为我们要设置的是定时任务,所以选择【不管用户是否登录都要执行】;因为我们要将本地资源复制到网络位置,
所以下面的不要存储密码一定不要选;
这里我们要说的是其实位置:在windows server 2012 R2下,起始位置选择上一步程序或脚本的存储位置
‘肆’ shell脚本---定时复制文件至目的文件夹
业务需求:定时从path1中取文件,复制到path2中
主要解释第7行
分3部分:
既然上述命令输出的是一串字符串,则不可避免需要做切割。
对于一行字符串str="aaa,bbb,vvv,ccc"
直接利用${str[@]}就可以获得分割后的列表。那么,如何定义分隔符呢?
IFS=$','
IFS是系统自带的一个变量,储存着分隔符,默认好像是空格。可以自定义
上面脚本中就是定义了IFS为换行符。
脚本后半部分就是依次处理文件,判断目标文件夹是否已有该文件,如果没有,就复制。
项目中源文件夹的文件是每个几分钟会增加一个,相当于上述脚本要每隔一段时间运行一次,以确保源文件夹和目标文件夹里的内容同步。
crontab讲解1
crontab讲解2