服务器不知道循环生成文件,Windows服务器下PowerShell命令往服务器共享文件夹进行文件拷贝、循环文件重命名...

由于项目需要,接触到了PowerShell命令,但是苦于以前没有接触过,几句话的代码百度搜索了很长时间。

主要功能是Windows服务器下利用PowerShell命令实现文件拷贝、文件重命名(去掉文件版本号),这其中还涉及到判断文件是否存在,删除文件功能。

建立远程连接

语法:net use \\ip\ipc$ "password" /user:"username"

例:net use \\10.100.1.1\ipc$ "aaa" /user:"administrator"

说明:原来采取的方式是利用net use连接远程服务器,共享文件夹映射为本地磁盘M盘以后后续使用M盘处理以下操作,使用完后将该链接释放。由于项目中会出现多个批处理命令一同远程连接并映射磁盘的情况,这个时候进行磁盘映射或者使用net use del断开连接的话会出现混乱情况。于是后续改成了不映射磁盘不中断连接的方式。

文件复制

语法:xcopy 要拷贝的文件 拷贝到的具体路径 /R /Y /e/s/k/d/f

例:xcopy ..\a\*.jar M:\CICD\jstack\apps\fssp\sp\ /R /Y /e/s/k/d/f

说明:xcopy是一个功能强大的复制指令,可以做到目录和文件的一同拷贝。

由于本项目是在本机将文件拷贝到远程服务器共享文件夹,所以进行了磁盘映射,例子中也是以磁盘映射为例,如果不想映射的话可以修改成具体的远程服务器地址,但是前提条件都是要使用net use与远程服务器建立连接。

后面复制方法具体参数说明:

/A 只复制有存档属性集的文件, 但不改变属性。

/M 只复制有存档属性集的文件, 并关闭存档属性。

/D:m-d-y 复制在指定日期或指定日期以后改变的文件。如果没有提供日期,只复制那些源时间比目标时间新的文件。

/EXCLUDE:file1[+file2][+file3]...

指定含有字符串的文件列表。如果有任何字符串与要被复制的文件的绝对路径相符,那个文件将不会得到复制。

例如,指定如 \obj\ 或 .obj 的字符串会排除目录 obj 下面的所有文件或带有 .obj 扩展名的文件。

/P 创建每个目标文件前提示。

/S 复制目录和子目录,除了空的。

/E 复制目录和子目录,包括空的。 与 /S /E 相同。可以用来修改 /T。

/V 验证每个新文件。

/W 提示您在复制前按键。

/C 即使有错误,也继续复制。

/I 如果目标不存在,又在复制一个以上的文件, 则假定目标一定是一个目录。

/Q 复制时不显示文件名。

/F 复制时显示完整的源和目标文件名。

/L 显示要复制的文件。

/G 允许将没有经过加密的文件复制到不支持加密的目标。

/H 也复制隐藏和系统文件。

/R 改写只读文件。

/T 创建目录结构,但不复制文件。不包括空目录或子目录。/T /E 包括空目录和子目录。

/U 只复制已经存在于目标中的文件。

/K 复制属性。一般的 Xcopy 会重设只读属性。

/N 用生成的短名复制。

/O 复制文件所有权和 ACL 信息。

/X 复制文件审核设置(隐含 /O)。

/Y 禁止提示以确认改写一个现存目标文件。

/-Y 导致提示以确认改写一个现存目标文件。

/Z 用重新启动模式复制网络文件

循环进行文件重命名

例:

$path=‘\\10.100.1.1\Test\‘

$hz=‘*-1.0.0-version.jar‘

dir $path$hz | foreach {

echo ‘当前文件重命名后的文件名‘

$after=$path+$_.Basename.Replace("-1.0.0-version","")

$after=$after+‘.jar‘

echo ‘判断该路径下是否已存在重命名后的文件名‘

if (test-path $after) {

echo ‘删除原有文件再重命名‘

Remove-Item $after

}

else{

echo ‘直接重命名‘

}

Rename-Item $_ -NewName ($_.Basename.Replace("-1.0.0-version","") + $_.extension)

}

说明:其中涉及到的语法

判断文件是否存在:test-path 路径(示例见上)

删除文件:Remove-Item 路径(示例见上)

重命名文件:Rename-Item $_ -NewName ($_.Basename.Replace("要替换的字符串","想要替换成的字符串") + $_.extension)

★其中要说的是test-path这个命令,我一直百度的是“shell命令判断文件是否存在”,但是百度出来的语句在powershell里面一直执行失败。浪费了很多时间自己找答案,后来有经验的同事说搜“powershell命令判断文件是否存在”,结果...就出来了...

也是不知道shell与powershell的区别,自然的以为shell=powershell...

卡住的点也是很迷离...

总体来说,目前需要的批处理命令仅需要上述这些,不足之处还望各位批评指正。

原文:https://www.cnblogs.com/bugkiller-cecilia/p/11731876.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值