标题: [文件操作] [已解决]求powershell或bat 解决文件拷贝问题 [打印本页]
作者: realchris 时间: 2015-4-8 16:08 标题: [已解决]求powershell或bat 解决文件拷贝问题
本帖最后由 realchris 于 2015-4-9 08:57 编辑
电脑上有A、B两个文件夹,A文件夹中的文件名都是8位长的,且第8位不是"s",就是"d"。
如果A文件夹中有两个文件,文件名前7位相同,最后一位分别是s和d,则看做是一对。
例如A文件夹中的文件“1111111s.txt、1111111d.txt”是一对,"2222222s.txt、2222222d.txt"是一对,"kkkkkkks.txt、kkkkkkkd.txt"是一对。。。。
但是也有不是一对的:像是单独的*s.txt或*d.txt(同样文件名长8位)。
要求:
把一对对的文件从A文件夹拷贝到B文件夹中,单独的*s.txt或*d.txt则不拷贝。
追加:
拷贝的时候,如果B文件夹中已存在相同文件,则不覆盖
(因为A中的文件很多很大,每次都覆盖的话要花很长时间)
新人求助,请各位帮帮我吧!~
谢谢!!!!
作者: realchris 时间: 2015-4-8 16:55
没学过编程伤不起啊,求助~
个人的思路:
使用get-childitem来获取文件夹下面的子文件夹和文件
然后,使用foreach-object的cmdlet来循环遍历下面的子对象。
然后,通过psiscontainer 属性来判断是文件夹还是文件
如果是文件的话,
定义一个变量到文件名,像是 “变量s.txt”
然后用Test-Path,检查“变量d.txt”是否存在,
如果 “变量d.txt”存在,
则用Copy-Item复制这两个文件到另个文件夹
如果文件已存在则跳过
作者: pcl_test 时间: 2015-4-8 17:04
本帖最后由 pcl_test 于 2015-4-8 17:09 编辑
放进A文件夹里运行- @echo off
- setlocal enabledelayedexpansion
- for %%a in (*.txt) do (
- set t=%%~na
- if exist "!t:~,-1!s.txt" if exist "!t:~,-1!d.txt" (echo n | copy "!t:~,-1!*.txt" "D:\B\" /-y)
- )
- pause
复制代码
作者: xxpinqz 时间: 2015-4-8 17:36
复制代码
比复制代码
更有效率,且无需两个判断。
作者: pcl_test 时间: 2015-4-8 17:45
回复 4# xxpinqz
说的是呢
作者: realchris 时间: 2015-4-9 08:44
多谢楼上的大神!可以了!太感谢啦~
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |